GTA-Center.com » Forum
http://www.gta-center.com/forums/

[GUIDA] Iniziare a scriptare
http://www.gta-center.com/forums/viewtopic.php?f=40&t=132
Pagina 1 di 1

Autore:  SNaKe_OlD [ 30/10/2010, 20:43 ]
Oggetto del messaggio:  [GUIDA] Iniziare a scriptare

= Iniziare a scriptare =
Innanzitutto aprite un nuovo documento pawno e incollate queste righe:

Codice:
#include <a_samp>


main()
{
   print("\n----------------------------------");
   print(" Blank Gamemode by your name here");
   print("----------------------------------\n");
}

#endif

public OnGameModeInit()
{
   // Don't use these lines if it's a filterscript
   SetGameModeText("Blank Script");
   AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
   return 1;
}

public OnGameModeExit()
{
   return 1;
}

public OnPlayerRequestClass(playerid, classid)
{
   SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
   SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
   SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
   return 1;
}

public OnPlayerConnect(playerid)
{
   return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
   return 1;
}

public OnPlayerSpawn(playerid)
{
   return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
   return 1;
}

public OnVehicleSpawn(vehicleid)
{
   return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
   return 1;
}

public OnPlayerText(playerid, text[])
{
   return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
   if (strcmp("/mycommand", cmdtext, true, 10) == 0)
   {
      // Do something here
      return 1;
   }
   return 0;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
   return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
   return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
   return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
   return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
   return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
   return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
   return 1;
}

public OnRconCommand(cmd[])
{
   return 1;
}

public OnPlayerRequestSpawn(playerid)
{
   return 1;
}

public OnObjectMoved(objectid)
{
   return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
   return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
   return 1;
}

public OnVehicleMod(playerid, vehicleid, componentid)
{
   return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
   return 1;
}

public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
   return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
   return 1;
}

public OnPlayerExitedMenu(playerid)
{
   return 1;
}

public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
   return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
   return 1;
}

public OnRconLoginAttempt(ip[], password[], success)
{
   return 1;
}

public OnPlayerUpdate(playerid)
{
   return 1;
}

public OnPlayerStreamIn(playerid, forplayerid)
{
   return 1;
}

public OnPlayerStreamOut(playerid, forplayerid)
{
   return 1;
}

public OnVehicleStreamIn(vehicleid, forplayerid)
{
   return 1;
}

public OnVehicleStreamOut(vehicleid, forplayerid)
{
   return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
   return 1;
}

public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
   return 1;
}


In questo topic vi spiegherò tutte le funzioni che possiamo fare con i callbacks(i public) e altre funzioni.

Codice:
#include <a_samp>

Questa riga include il file a_samp.inc che contiene alcune funzioni che possono fare i player.

Codice:
main()
{
   print("\n----------------------------------");
   print(" Blank Gamemode by your name here");
   print("----------------------------------\n");
}

Queste 4 righe mandano un messaggio al server, non leggibile in game ma solo dai log.


Codice:
public OnGameModeInit()
{

   SetGameModeText("Blank Script");
   AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
   return 1;
}

Il call back OnGameModeInit possiamo dire che è la base del server perchè setta il nome della gamemode e permette di spawnare il personaggio. In questo callback possiamo mettere dei timer, modificare l'orario, modificare le previsioni ecc.

Codice:
public OnGameModeExit()
{
   return 1;
}

In questo call back puoi mettere tutte le funzioni che si avviano DOPO che la gm sta cambiando.

Codice:
public OnPlayerRequestClass(playerid, classid)
{
   SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
   SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
   SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
   return 1;
}

Questo call back riguarda le telecamere e il personaggio prima di spawnare, qui è possibile far muovere i personaggi, ecc. SetPlayerPos setta il personaggio, SetPlayerCameraPos setta la telecamera dentro il personaggio, SetPlayerCameraLookAt usa quelle coordinate per settare la telecamera esterna.


Codice:
public OnPlayerConnect(playerid)
{
   return 1;
}

In questo call back si mettono tutte le funzioni che accadono quando il personaggio si connette al server, quindi potete mettere messaggi ecc.

Codice:
public OnPlayerDisconnect(playerid)
{
   return 1;
}

In questo call back si mettono tutte le funzioni che accadono quando il personaggio di disconnette, siccome il personaggio si disconnette non può fare nessuna funzione.


Codice:
public OnPlayerSpawn(playerid)
{
   return 1;
}

In questo call backs si mettono tutte le funzioni che accadono quando il personaggio si spawna, quindi potete mettere per esempio SetPlayerArmour(playerid,100); ovvero il player che spawna ottiene l'armatura.

Codice:
public OnPlayerDeath(playerid, killerid,reason)
{
   return 1;
}

In questo call back si mettono tutte le funzioni che accadono quando un player muore, per esempio potete mettere "Tizio" ha ucciso "Caio"("Shotgun");


Codice:
public OnVehicleDeath(vehicleid, killerid)
{
   return 1;
}

In questo call back si mettono tutte le funzioni che accadono quando un veicolo scoppia, potete mettere per esempio un messaggio che dice "BOOOM"! ecc.

Codice:
public OnPlayerText(playerid, text[])
{
   return 1;
}

In questo call back si mettono tutte le funzioni che riguardano il testo che noi scriviamo. Per esempio possiamo fare una funzione che se un player dice una parolaccia viene kickato.(ES.):

Codice:
if(strfind(text, "parolaccia", true) == 0)
{
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
format(string, 256, "*** %­s é stato kickato per aver detto una parolaccia(Auto-Kick)", PlayerName);
SendClientMessageToAll(COLOR_RED, string);
SendClientMessage(playerid,COLOR_RED,"Sei stato kickato dal server per aver detto una parola volgare.");
Kick(playerid);
}


Codice:
public OnPlayerCommandText(playerid, cmdtext[])
{
       if (strcmp("/mycommand", cmdtext, true, 10) == 0)
       {
          // Do something here
          return 1;
       }
       return 0;
}

Questo call back possiamo dire che è quello che useremo di piu' in queste guide, perchè con questo call back si possono creare i comandi, dai comandi complessi a quelli semplici. Per esempio far morire un player si fa così (ES).
Codice:
if (strcmp("/kill", cmdtext, true, 10) == 0)
{
SetPlayerHealth(playerid,0);
return 1;
}


Codice:
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
       return 1;
}

In questo call back si mettono tutte le funzioni che riguardano il player quando entra in un veicolo.

Codice:
public OnPlayerExitVehicle(playerid, vehicleid)
{
       return 1;
}

In questo call back si mettono tutte le funzioni che riguardano il player quando esce da un veicolo.

Codice:
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}

In questo call back si mettono le funzioni che un player può fare in newstate e in oldstate. Per esempio un player può fare una funziona in newstate ma in oldstate no.

Codice:
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}

In questo call back si mettono le funzioni che si possono fare quando un player entra in un check, per esempio mandare un messaggio che dice "Sei arrivato primo!".

Codice:
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}

In questo call back si mettono le funzioni che si avviano dopo che un player esce dal checkpoint

Codice:
public OnPlayerEnterRaceCheckpoint(playerid)
{

return 1;
}

In questo call back si possono fare le gare, ovvero checkpoint rossi collegati tra di loro per formare un circuito. Quando un player entra nel check si avvia una funzione che mettete voi.


Codice:
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}

In questo call back si avviano le funzioni SOLO dopo che il player esce dal checkpoint.

Codice:
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}

In questo call back si mettere le funzioni che si avvia quando un oggetto è in movimento tipo: (ES)

Codice:
[QUOTE]public OnPlayerObjectMoved(playerid, objectid)
{
printf("un object si è mosso");
return 1;
}


Codice:
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}


In questo call back si può aggiungere una funzione al pickup per esempio: (ES):

Codice:
new cash;

public OnGameModeInit()
{
    soldi= CreatePickup(1274, 2, 0.0, 0.0, 9.0);
    return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
    if(pickupid == soldi) GivePlayerMoney(playerid,10000);
    return 1;
}



Codice:
public OnVehicleMod(playerid, vehicleid, componentid)
{
return 1;
}

In questo call back si può modificare le ruote dell'auto, la verniciatura ecc. oppure semplicemente rivelare chi spawna un auto truccata: (ES):

Codice:
printf("Veicolo %d è stato moddato dall'id %d con questi componenti:, ID: %d",vehicleid,playerid,componentid);
if(GetPlayerInterior(playerid) == 0)
{
BanEx(playerid, "Tuning Hacks");
return 1;
}

public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
{
return 1;
}
[/CODE]

L'unica funzione che può fare questo callback è rilevare che id paintjob ha. ES

Codice:
new string[128];
format(string, sizeof(string), "Hai cambiato il tuo paintjob id in  %d!", paintjobid); SendClientMessage(playerid, 0x33AA33AA, string);
return 1;


Codice:
public OnVehicleRespray(playerid, vehicleid, color1, color2)
{
return 1;
}


Questo call back permette di colorare id generali di auto per esempio, 411 rosso e verde, così coloreremo tutte le infernus rosso e verde.

Codice:
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}

Questo call back serve per creare dei menu ES

Codice:
new Menu:menu;

public OnGameModeInit()
{
    menu = CreateMenu("Esempio", 1, 50.0, 180.0, 200.0, 200.0);
    AddMenuItem(menu, 0, "1");
    AddMenuItem(menu, 0, "2");
    return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
    new Menu:current;
    current = GetPlayerMenu(playerid);
    if(current == menu)
    {
   switch(row)
   {
       case 0: print("1");
       case 1: print("2");
   }
    }
    return 1;
}



public OnPlayerExitedMenu(playerid)
{
return 1;
}

Questo call back si avvia solo quando un player esce dal menu.

Codice:
public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
{
return 1;
}

Questo call back rileva il nuovo interior e distingue il vecchio interior. Es

Codice:
new string[48];
format(string, sizeof(string), "Il tuo vecchio interior è %d, il nuovo id è %d!",oldinteriorid,newinteriorid); SendClientMessage(playerid, COLOR_ORANGE, string);


Codice:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
return 1;
}

In questo call back fa funzionare le funzioni solo quando viene premuto un determinato pulsante in questo caso il tasto "sparo": ES
Codice:
if (newkeys & KEY_FIRE)


Codice:
public OnRconLoginAttempt(ip[], password[], success)
{
return 1;
}


In questo call back si può anche fare una specie di controllo chi si logga in rcon, e chi sbaglia la rcon. ES.

Codice:
if(!success) //pass incorretta
    {
   printf("L'ip di quello che ha sbagliato è %­s ha provato con la rcon %­s",ip, password);
   new pip[16];
   for(new i=0; i<MAX_PLAYERS; i++) //
   {
       GetPlayerIp(i, pip, sizeof(pip));
       if(!strcmp(ip, pip, true)) // player ip
       {
      SendClientMessage(i, 0xFFFFFFFF, "Sbagliata, Addio."); // Manda messaggio
      Ban(i); // Banna il player
       }
   }
    }


Codice:
public OnPlayerUpdate(playerid)
{
return 1;
}


In questo call back segna ogni cosa che facciamo nel server quindi possiamo fare anche una specie di script che quando cambi l'arma ti dice quale arma hai cambiato e quella che avevi prima. ES.

Codice:
public OnPlayerUpdate(playerid)
{
    new iCurWeap = GetPlayerWeapon(playerid); // Return the player's current weapon      
    if(iCurWeap != GetPVarInt(playerid, "iCurrentWeapon")) // If he changed weapons since the last update
    {
   // Lets call a callback named OnPlayerChangeWeapon
   OnPlayerChangeWeapon(playerid, GetPVarInt(playerid, "iCurrentWeapon"), iCurWeap);
   SetPVarInt(playerid, "iCurrentWeapon", iCurWeap);//Update the weapon variable
    }
    return 1; // Send this update to other players.
}

stock OnPlayerChangeWeapon(playerid, oldweapon, newweapon)
{
   new  s[500],
      oWeapon[24],
      nWeapon[24];

   GetWeaponName(oldweapon, oWeapon, sizeof(oWeapon));
   GetWeaponName(newweapon, nWeapon, sizeof(nWeapon));

   format(s, sizeof(s), "Hai cambiato l'arma da  %­s a %­s!", oWeapon, nWeapon);

   SendClientMessage(playerid, 0xFFFFFFFF, s);
}



Codice:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
return 1;
}


In questo call back si possono fare i dialoghi con i click, cioè tipo un menu con scritto: AVANTI o INDIETRO, clickandolo va avanti o indietro. Es

Codice:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    switch(dialogid)
    {
   case 1:
   {
       if(!response)
       {
      SendClientMessage(playerid, 0xFF0000FF, "ANNULLA.");
      return 1; // We processed it
       }

       switch(listitem) //
       {
      case 0: //
      {
          // PRIMO DIALOG
      }
      case 1:
      {
          // SECONDO DIALOG
      }
      case 2:
      {
         //
      }
      // Resto dell'1

       }

   }
   // Resto del dialogo

    }
    return 1;
}

Autore:  Giovanni94m [ 30/10/2010, 20:47 ]
Oggetto del messaggio:  Re: [GUIDA] Iniziare a scriptare

grande snake : Thumbup :

Autore:  Brian_Furious [ 30/10/2010, 22:20 ]
Oggetto del messaggio:  Re: [GUIDA] Iniziare a scriptare

Bello, la prima parte credo che è presa da LVDM :D

Autore:  SNaKe_OlD [ 30/10/2010, 22:23 ]
Oggetto del messaggio:  Re: [GUIDA] Iniziare a scriptare

Si le coordinate sono a las venturas

Pagina 1 di 1 Tutti gli orari sono UTC + 1 ora [ ora legale ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/