Oggi è 29/03/2024, 14:18

Tutti gli orari sono UTC + 1 ora [ ora legale ]





 Pagina 1 di 1 [ 4 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

  Stampa pagina

Autore Messaggio
 Oggetto del messaggio: [GUIDA] Iniziare a scriptare
MessaggioInviato: 30/10/2010, 20:43 
Avatar utente
Utente

Iscritto il: 29/10/2010
Messaggi: 149
Favourite GTA: San Andreas
Xfire: pcnumbertwo

Karma
0


Non connesso
= 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;
}

_________________
My clan on Sa:Mp: TDk click :)
Immagine


Top
 E-mail  
 

 Oggetto del messaggio: Re: [GUIDA] Iniziare a scriptare
MessaggioInviato: 30/10/2010, 20:47 
Avatar utente
Administrator

Iscritto il: 02/09/2010
Messaggi: 1349
Località: Agrigento
Favourite GTA: Vice City
PlayStation Network: Giovanni94m
Xfire: Giovanni94m
Steam: Giovanni94m

Karma
10


Non connesso
grande snake : Thumbup :

_________________
Immagine
Immagine
Immagine
Immagine
Immagine
Immagine
Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA] Iniziare a scriptare
MessaggioInviato: 30/10/2010, 22:20 
Avatar utente
Utente

Iscritto il: 30/10/2010
Messaggi: 50
Favourite GTA: GTA IV
PlayStation Network: Brian_Furious
Xbox Live: Brian_Furious
Xfire: BrianFurious

Karma
0


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

_________________
Immagine

Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA] Iniziare a scriptare
MessaggioInviato: 30/10/2010, 22:23 
Avatar utente
Utente

Iscritto il: 29/10/2010
Messaggi: 149
Favourite GTA: San Andreas
Xfire: pcnumbertwo

Karma
0


Non connesso
Si le coordinate sono a las venturas

_________________
My clan on Sa:Mp: TDk click :)
Immagine


Top
 E-mail  
 
Visualizza ultimi messaggi:  Ordina per  
 Pagina 1 di 1 [ 4 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

Tutti gli orari sono UTC + 1 ora [ ora legale ]



Chi c’è in linea

Visitano il forum: Nessuno e 32 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
cron