GTA-Center.com » Forum http://www.gta-center.com/forums/ |
|
[GUIDA] Uso dei Callback http://www.gta-center.com/forums/viewtopic.php?f=40&t=223 |
Pagina 1 di 1 |
Autore: | Angelo [ 05/11/2010, 17:54 ] |
Oggetto del messaggio: | [GUIDA] Uso dei Callback |
Raga in questa guida vi spiegherò l'uso di ogni singolo Callback del Pawno. Prima di tutto dovete sapere che i Callback sono quelle funzioni che regolano la GM, esempio il "OnPlayerConnect" si avvia quando un player si connette o il "OnPlayerSpawn" si avvia quando un player spawn, ecc... Per avviare un Callback si deve aggiungere public prima del nome del Callback, in ogni Callback troveremo degli argomenti, il più importante è il playerid che indica la persona che sta compiendo l'azione nel Callback. P.S. Ogni Callback si può avviare una sola volta ! Iniziamo: 1° "OnGameModeInit()" Il OnGameModeInit si avvia quando aprite il dos del server Nel OnGameModeInit si devono aggiungere Veicoli, Skins, Pickups o Timer che avviano altre funzioni, queste funzioni le trovate qua: viewtopic.php?f=40&t=219 Uso: Codice: public OnGameModeInit() { AddStaticVechicle(..); //Altre funzioni } Come potete notare questo Callback tra le parentesi non ha argomenti, questo perchè quando si avvierà la GM non ci saranno ID, Skin, Veicoli, Oggetti, Timer ecc... essi si avvieranno dopo l'avvio della GM 2° "OnGameModeExit()" Il OnGameModeExit si avvia quando la GM verra "Riavviato" o verrà "Chiusa", qua potrete mettere le funzioni per distruggere tutti i veicoli o tutti gli oggetti ecc.. Uso: Codice: public OnGameModeExit() { for(new v = 1; v < MAX_VEHICLES; v++) DestroyVehicle(v); } In questo modo alla chiusura della Gamemode tutti i veicoli verrano distrutti 3° "OnFilterScriptInit()" Il OnFilterScriptInit è perfettamente uguale al OnGameModeInit, l'unica differenza è che il OnFilterScriptInit viene avviato negli FS e non ha bisogno del "main()" in cima 4° "OnFilterScriptExit()" Il OnFilterScriptExit è perfettamente uguale al OnGameModeExit, l'unica differenza è che il OnFilterScriptExit viene avviato negli FS 5° "OnPlayerConnect(playerid)" Il OnPlayerConnect si avvia quando un player si connette, qua possiamo trovare l'argomento "playerid" cioè l'id del player che si connette Uso: Codice: public OnPlayerConnect(playerid) { new nome[24]; new string[128]; GetPlayerName(playerid, nome, 24); format(string, 128, "Il Player %s si è connesso", nome); SendClientMessageToAll(COLOR_GREEN, string); return 1; } Qua prima verranno creati i due array "nome e string" dopo col GetPlayerName nome assume il nome del playerid e infine con un format viene formattato il messaggio aggiungendo il nome e inviato con SendClientMessageToAll 6° "OnPlayerDisconnect(playerid)" Il OnPlayerDisconnect viene richiamato quando il playerid si disconnette Uso: Codice: public OnPlayerDisconnect(playerid) { new nome[24]; new string[128]; GetPlayerName(playerid, nome, 24); format(string, 128, "Il Player %s si è disconnesso", nome); SendClientMessageToAll(COLOR_GREEN, string); return 1; } 7° "OnPlayerSpawn(playerid)" Il OnPlayerSpawn viene richiamato quando il playerid spawna Uso: Codice: public OnPlayerSpawn(playerid) { SendClientMessage(playerid, COLOR_GREEN, "Sei spawnato"); return 1; } 8° "OnPlayerDeath(playerid, killerid, reason)" Il OnPlayerDeath viene richiamato quando il killerid uccide il playerid con l'arma "reason" Uso: Codice: public OnPlayerDeath(playerid, killerid, reason) { SendDeathMessage(killerid, playerid, reason); return 1; } Quando un player muore viene mandato un messaggio di morte in basso a destra dicendo che il killerid ha ucciso il playerid con l'arma mostrata nella reason 9° "OnVehicleSpawn(vehicleid)" Il OnVehicleSpawn viene richiamato quando il vehicleid spawna Uso: Codice: public OnVehicleSpawn(vehicleid) { printf("il veicolo con id %d è spawnato", vehicleid); return 1; } Qua possiamo trovare la variabile vehicleid che indica l'id del veicolo 10° "OnVehicleDeath(vehicleid, killerid)" Il OnVehicleDeath viene richiamato quando un veicolo viene distrutto Uso: Codice: public OnVehicleDeath(vehicleid, killerid) { printf("il veicolo con id %d è morto per mano del player con id %d", vehicleid, playerid); return 1; } 11° "OnPlayerText(playerid, text[])" Il OnPlayerText viene richiamato quando un player invia un messaggio in chat Uso: Codice: public OnPlayerText(playerid, text[]) { if(pMutato[playerid]) return 0; return 1; } Questa funzione dice che se il player è mutato allora il callback returna 0 Quando il callback OnPlayerText returna 0 il messaggio non viene inviato Qua possiamo trovare l'argomento "text[]" molto utile perchè text[] è il messaggio inviato dal playerid e può essere usato per creare Team chat o Admin chat ecc... 12° "OnPlayerCommandText(playerid, cmdtext[])" Il OnPlayerCommandText è simile al OnPlayerText, solo che esso viene chiamato quando mettete davanti ad una parola "/" Uso: Codice: public OnPlayerCommandText(playerid, cmdtext[]) { if(strcmp(cmdtext, "/god", true)==0) { return SetPlayerHealth(playerid, 1000000.0); } return 0; } Il strcmp dice che se cmdtext è uguale a /god allora avviene la funzione Il OnPlayerCommandText returna 0 cosicchè quando viene inviato il comando ed è sbagliato invece di inviare il messaggio a tutti manda il messaggio "Unknow Command" Qua troviamo l'argomento cmdtext che corrisponde alla stringa del comando 13° "OnPlayerRequestClass(playerid, classid)" Il OnPlayerRequestClass viene avviato quando un player sta scegliendo il personaggio Uso: Codice: public OnPlayerRequestClass(playerid, classid) { GameTextForPlayer(playerid, "Scegli un personaggio", 2000, 1); return 1; } Questo script invia il messaggio "Scegli un personaggio" quando il playerid sta scegliendo la skin Qua possiamo trovare l'argomento "classid" che corrisponde all'id della Classe che stai visualizzando Il classid 0 è uguale al primo AddPlayerClass che si trova nella vostra GM e così il classid 1 è uguale al secondo AddPlayerClass ecc... 14° "OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)" Il OnPlayerEnterVehicle viene avviato quando il playerid entra nel veicolo vehicleid Uso: Codice: punlic OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) { printf("Il Player con id %d è entrato nel veicolo con id %d come guidatore", playerid, vehicleid); return 1; } Qua possiamo trovare l'argomento "ispassenger" il quale indica che un player entra come passeggero o guidatore, esempio: Codice: if(ispassenger) RemovePlayerFromVehicle(playerid); 15° "OnPlayerExitVehicle(playerid, vehicleid)" Il OnPlayerExitVehicle viene richiamato quando un player esce da un veicolo Uso: Codice: public OnPlayerExitVehicle(playerid, vehicleid) { printf("Il Player con id %d è uscito dal veicolo con id %d", playerid, vehicleid); return 1; } 16° "OnPlayerStateChange(playerid, newstate, oldstate)" Il OnPlayerStateChange viene richiamato quando un player cambia il suo stato Gli stati di un player indicano l'azione che sta compiendo il player e sono questi: In questo Callback troviamo newstate e oldstate newstate corrisponde al nuovo stato, cioè ciò che sta facendo il player ora oldstate corrisponde al vecchio stato, cioè ciò che stava facendo il player prima del newstate Uso: Codice: public OnPlayerStateChange(playerid, newstate, oldstate) { if(newstate == PLAYER_STATE_DRIVER && oldstate == PLAYER_STATE_ONFOOT) { printf("Il player con id %d è entrato in un veicolo"); } return 1; } 17° "OnPlayerEnterCheckpoint(playerid)" Il OnPlayerEnterCheckpoint viene avviato quando un player entra in qualsiasi checkpoint, l'unico bug di questa funzione è che dovrebbe esserci un argomento per segnalare il checkpoint in cui stai entrando, ma possiamo usa il IsPlayerInRangeOfPoint Uso: Codice: public OnPlayerEnterCheckpoint(playerid) { printf("Il player con id %d è entrato in un checkpoint", playerid); return 1; } 18° "OnPlayerLeaveCheckpoint(playerid)" Il OnPlayerLeaveCheckpoint viene richiamato quando un player esce da un checkpoint 19° "OnPlayerEnterRaceCheckpoint(playerid)" Il OnPlayerEnterRaceCheckpoint viene richiamato quando un player entra in un Race-Checkpoint 20° "OnPlayerLeaveRaceCheckpoint(playerid)" Il OnPlayerLeaveRaceCheckpoint viene richiamato quando un player esce da un Race-Checkpoint 21° "OnRconCommand(cmd[])" Il OnRconCommand viene richiamato quando viene inviato un comando Rcon con "SendRconCommand" Uso: Codice: public OnRconCommand(cmd[]) { if(strcmp(cmd, "gmx", true)==0) print("La GM è stata riavviata"); return 1; } Qua troviamo l'argomento "cmd[]" che corrisponde al comando Rcon inviato con SendRconCommand 22° "OnPlayerRequestSpawn(playerid)" Il OnPlayerRequestSpawn viene richiamato quando un player preme il tasto "Shift" per spawnare Uso: Codice: public OnPlayerRequestSpawn(playerid) { SendClientMessage(playerid, COLOR_RED, "Non puoi spawnare"); return 0; } Se nel OnPlayerRequestSpawn mettete return 0 allora il player non potrà mai spawnare 23° "OnObjectMoved(objectid)" Il OnObjectMoved viene richiamato quando un oggetto inizia a muoversi con la funzione "MoveObject" Uso: Codice: public OnObjectMoved(objectid) { printf("L'oggetto con id %d si sta muovendo", objectid); return 1; } Qua troviamo l'argomento objectid che corrisponde all'id dell'oggetto in movimento 24° "OnPlayerObjectMoved(playerid, objectid)" Il OnPlayerObjectMoved viene richiamato quando un Player-Object inizia a muoversi con la funzione "MovePlayerObject" Uso: Codice: public OnPlayerObjectMoved(playerid, objectid) { printf("Il PlayerObject con id %d si sta muovendo", objectid); return 1; } 25° "OnPlayerPickUpPickup(playerid, pickupid)" Il OnPlayerPickUpPickup viene richiamato quando un player entra in un Pickup Uso: Codice: public OnPlayerPickUpPickup(playerid, pickupid) { printf("Il player %d è entrato nel pickup con id %d", playerid, pickupid); return 1; } Qua troviamo l'argomentro pickupid che corrisponde all'id del pickup 26° "OnVehicleMod(playerid, vehicleid, componentid)" Il OnVehicleMod viene richiamato quando un player aggiunge ad'un veicolo un componente come il nos o un alettone ecc... Uso: Codice: public OnVehicleMod(playerid, vehicleid, componentid) { printf("Il player %d ha aggiunto al veicolo %d il componente %d", playerid, vehicleid, componentid); return 1; } Qua troviamo l'argomento componentid che corrisponde all'id del componente montato sul veicolo 27° "OnEnterExitModShop(playerid, enterexit, interiorid)" Questa funzione viene richiamata quando un player entra o esce da un transfender Possiamo trovare la variabile "enterexit" che indica se sta entrando o uscendo e la variabile "interiorid" che indica l'interior del transfender 28° "OnVehiclePaintjob(playerid, vehicleid, paintjobid)" Il OnVehiclePaintjob viene richiamato quando un player vernicia la sua auto con una paintjob Possiamo trovare la variabile "paintjobid" che corrisponde all'id della paintjob applicata 29° "OnVehicleRespray(playerid, vehicleid, color1, color2)" Il OnVehicleRespray viene richiamato quando un veicolo viene riverniciato al Pay'n'Spray Possiamo trovare gli argomenti "color1 e color2" che corrispondo agli id dei colori applicati 30° "OnVehicleDamageStatusUpdate(vehicleid, playerid)" Il OnVehicleDamageStatusUpdate viene richiamato quando un veicolo perde vita o viene ammaccato 31° "OnPlayerSelectedMenuRow(playerid, row)" Il OnPlayerSelectedMenu viene richiamato quando il player visualizza un menù Possiamo trovare l'argomento "row" che corrisponde al menu visualizzato 32° "OnPlayerExitedMenu(playerid)" Il OnPlayerExitedMenu viene richiamato quando un player abbandona un menu 33° "OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)" Il OnPlayerInteriorChange viene richiamato quando un player cambia il suo interior Uso: Codice: public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) { printf("Il player con id %d ha cambiato il suo interior da %d a %d" playerid, oldinterior, newinterior); return 1; } Possiamo trovare gli argomenti "newinterior e oldinterior" newinterior = interior attuale del player oldinterior = interior precedente al newinterior 34° "OnPlayerKeyStateChange(playerid, newkeys, oldkeys)" Il OnPlayerKeyStateChange viene richiamato quando un player scaccia uno dei tasti(elencati qua sotto) della tastiera Uso: Codice: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if(newkeys == KEY_JUMP && IsPlayerInAnyVehicle(playerid)) { new Float:Vel[3]; GetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]); SetVehicleVelocity(GetPlayerVehicleID(playerid), Vel[0], Vel[1], Vel[2]+0.3); } return 1; } Questo script si avvia appena premete il tasto per saltare, e aumenta la velocità nell'asse Z dell'auto di 0.3 metri Possiamo trovare gli argomenti newkeys = Tasto appena premuto oldkeys = Tasto premuto prima del newkeys 35° "OnRconLoginAttempt(ip[], password[], success)" Il OnRconLoginAttempt viene richiamato quando un player sbaglia il Rcon-login Possiamo trovare tre argomenti: ip = ip del player che ha sbagliato il Rcon login password = password usata dal player success (se 1 vuol dire che ha azzeccato la password, altrimenti se è 0 vuol dire che non l'ha azzeccata) Uso: Codice: public OnRconLoginAttempt( ip[], password[], success ) { if(!success) printf("L'ip %s ha sbagliato il Rcon login", ip) return 1; } 36° "OnPlayerUpdate(playerid)" Il OnPlayerUpdate è un Callback che viene richiamato ogni 20 ms registrando ciò che fa il player Uso: Codice: public OnPlayerUpdate(playerid) { if(GetPlayerScore(playerid) > 0) SetPlayerScore(playerid, 0); return 1; } Semplice script che se trova nel player più di 0 score le resetta 37° "OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])" Il OnDialogResponse è un Callback aggiunto nella versione 0.3 che permette l'utilizzo dei nuovi menu con dialogo e che viene richiamato quando un player sta visualizzando un Dialogo Possiamo trovare moltissimi argomenti: dialogid = Id del dialog che si sta visualizzando response (se 1 vuol dire che ha accettato il dialog, se 0 vuol dire che non ha accettato il dialog) listitem = numero colonna del dialog inputtext (Solo se si sta visualizzando un dialog dove bisogna scrivere) = corrisponde al testo che viene scitto nel dialog Per avviare un dialog bisogna usare il ShowPlayerDialog, ma esso non fa parte dei Callback. Guida finita, Tempo di lavorazione: 2h Spero vi sia piaciuta, ho tralasciato OnPlayerStreamIn(playerid, forplayerid) OnPlayerStreamOut(playerid, forplayerid) OnVehicleStreamIn(vehicleid, forplayerid) OnVehicleStreamOut(vehicleid, forplayerid) Perchè non so usarli xD E con questa finisco di spiegare il a_samp.inc alla prossima guida |
Autore: | Giovanni94m [ 05/11/2010, 18:53 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
ottimo ottimo |
Autore: | Peppinux AKA Peppe_Stasu [ 05/11/2010, 20:07 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Complimenti! Anche questa fantastica guida... Continua così! |
Autore: | Angelo [ 05/11/2010, 20:22 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Grazie |
Autore: | barletheking [ 05/11/2010, 20:30 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Bravissimo |
Autore: | Lee_Zarock [ 05/11/2010, 21:29 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Mi chiedo dove trovate la voglia di postare queste guide, io non la tengo proprio ò.ò |
Autore: | Peppinux AKA Peppe_Stasu [ 05/11/2010, 21:35 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Nah è divertente |
Autore: | Angelo [ 05/11/2010, 21:38 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Non avevo niente da fare xD |
Autore: | Lee_Zarock [ 05/11/2010, 22:42 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Figurati, non fraintendete, non dico sia sbagliato, anzi... Poi secondo me io non ne sarei capace, anche se capisco i meccanismi la teoria in generale non è proprio il mio forte, chissà qualche volta proverò anche io ò.ò |
Autore: | Den_Zarock [ 06/11/2010, 1:58 ] |
Oggetto del messaggio: | Re: [GUIDA] Uso dei Callback |
Bravo può essere utile questa guida.. |
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/ |