Flame^ Geplaatst: 15 april 2006 Rapport Geplaatst: 15 april 2006 SA-MP Gamemode tut Team vs Team script In deze tutorial leg ik in het kort uit wat en hoe je een Team vs Team gamemode maakt. Voor vragen kan je die gewoon hier stellen of mij PM’en. We beginnen! Ten eerste open je PAWN en ga je naar file ----> new, je krijgt nu een heel blan script te zien. Nu moet je gaan bedenken wat er allemaal in moet en wat voor gamemode je gaat maken. We houden het simpel en nemen een Vagos vs OGF war. Je zet bovenaan bij het script onder #include <a_samp> “#include <float>” en “#include <core>” . Daarna moet je teams en kleuren gaan definieren. Dit zet je onder de include’s #define TEAM_VAGOS 1 // Team Vagos #define TEAM_BALLAS 2 // Team Ballas #define COLOR_YELLOW 0xFFFF00AA // Kleur Vagos #define COLOR_PINK 0xFF66FFAA // Kleur Ballas #define COLOR_GREY 0xAFAFAFAA // Kleur wanneer je inactive bent static gTeam[MAX_PLAYERS]; Nu moet je wat forwards zetten, dus dingen die sowieso moeten gebeuren. Denk hierbij aan dingen als: Team kleur zetten, speler klaar maken voor setup, uit de gamemode gaan, etcetera. Zet dit dus onder de define’s forward SetPlayerToTeamColor(playerid); // Speler naar teamkleur zetten forward SetupPlayerForClassSelection(playerid); // Speler klaarmaken voor setup forward SetPlayerTeamFromClass(playerid,classid); // Speler in team zetten forward ExitTheGameMode(); // uit gamemode gaan Om je script even ordelijk te houden zet je boven elke header even dit: //------------------------------------- Doe dat dus onder de forwards en zet onder het lijntje dit neer: main() { print("\n----------------------------------"); print(" Ballas vs Vagos by [QB]Flame\n"); print("----------------------------------\n"); } Dit is dus de naam van je script. Zet nu weer de lijn eronder en daarna zet je dit eronder: public OnGameModeInit() { SetGameModeText(“Ballas vs Vagos”); SetWorldTime(6); // tijd in uren. ShowNameTags(1); // Spelers namen boven health balk aan of uit. Nu aan ShowPlayerMarkers(1); // Blokjes op radar aan of uit? Nu aan // Vehicles Vagos ---------- Zet hier de autos van de Vagos neer // Vehicles Ballas ---------- Zet hier de autos van de Ballas neer // Vagos Class ------------ Zet hier de classes van de vagos neer waaruit je kan kiezen // Ballas Class ----------- Ze hier de classes van de ballas neer waaruit je kan kiezen return 1; } Oke, hier moet je eindelijk zelf is wat doen. Ik zal de codes + uitleg geven voor de classes en autos. AddPlayerClass(ID, X, Y, Z, Rotatie, wapen1, wapen1_ammo, wapens2, wapen2_ammo, wapen3, wapen3_ammo); ID = Ped ID, zie ped.ide X + Y +Z = De coordinaten. Gebruik SA Place Manager Rotatie = welke kant kijk je op als je spawnt Wapen1/2/3 = Het wapen ID van je wapen Wapen1/2/3_ammo = ammo van wapen Voorbeeld: AddPlayerClass(105,2500.2688,-1685.4584,13.4607,44.8214,9,0,25,25,32,200); Nu die voor autos: AddStaticVehicle(Auto ID, X, Y, Z, Rotatie, kleur1, kleur2); Voorbeeld: AddStaticVehicle(567,2468.3486,-1653.4425,13.2643,91.4342,114,1); Hiermee moet je de OnGameModeInit() toch wel aardig mee kunnen opvullen. We gaan verder! Nu gaan we bepalen wat er gebeurt als er een speler in het spel komt. Zet die --- lijn er weer en zet dit eronder: public OnPlayerConnect(playerid) { SetPlayerColor(playerid,COLOR_GREY); // Kleur GameTextForPlayer(playerid,"~r~Ballas ~w~vs ~y~Vagos!",2000,5); // Text return 1; } Dit krijgt de player dus te zien wanneer hij joint. ~r~ staat voor rood, ~w~ voor wit en ~y~ voor geel. Nu gaan we de speler klaarmaken voor selectie! Dus het spawn screen wat je te zien krijgt. Zet de ---- lijn er weer neer en dan zet je dit eronder: public SetupPlayerForClassSelection(playerid) { SetPlayerInterior(playerid,11); SetPlayerPos(playerid,508.7362,-87.4335,998.9609); SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609); SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609); SetPlayerFacingAngle(playerid,0.0); } Ik denk niet dat ik dit hoef uit te leggen, want je kan aan de commands al zien wat het doet. We gaan weer verder en deze keer zetten we de “SetPlayerTeamFromClass” klaar. Zet de ---- lijn erboven en dan dit eronder: public SetPlayerTeamFromClass(playerid,classid) { if(classid == 0 || classid == 1 || classid == 2) { gTeam[playerid] = TEAM_VAGOS; } else if(classid == 3 || classid == 4 || classid == 5) { gTeam[playerid] = TEAM_BALLAS; } } Nu moet je even goed op letten, want anders kan je een groot deel van je code verpesten. Het belangrijkste hier is dit regeltje: “If(classid == 0 || classid == 1 || classid == 2) {“ Het Classid nummer hangt samen met het AddPlayerClass commando. Je MOET dus eerst de 3 vagos classes zetten (daarom staat Vagos ook bovenaan) en daarna pas de 3 Ballas classes. Dan pas gaat het goed. Plaats hieronder de --- lijn. Nu gaan we de speler naar zijn team kleur zetten. Zet onder de --- lijn dit: public SetPlayerToTeamColor(playerid) { if(gTeam[playerid] == TEAM_VAGOS) { SetPlayerColor(playerid,COLOR_YELLOW); // geel } else if(gTeam[playerid] == TEAM_BALLAS) { SetPlayerColor(playerid,COLOR_PINK); // roze/paars } } Hij kijkt dus eerst of de player de vagos heeft gekozen en zoja zet hij de kleur naar geel, en als de player de ballas heeft gekozen (else if) zet hij de kleur naar paars/roze. Zet de ---- lijn hieronder. Nu gaan we erbij zetten wat men ziet tijdens het class zetten. public OnPlayerRequestClass(playerid, classid) { SetupPlayerForClassSelection(playerid); SetPlayerTeamFromClass(playerid,classid); if(classid == 0 || classid == 1 || classid == 2) { GameTextForPlayer(playerid,"~y~VAGOS",1000,5); } else if(classid == 3 || classid == 4 || classid == 5) { GameTextForPlayer(playerid,”~r~BALLAS",1000,5); } return 1; } We naderen het einde! Zet opnieuw de --- lijn hieronder. Nu gaan we erbij zetten wat er gebeurt als een player spawnt. Zet dit onder je lijn: public OnPlayerSpawn(playerid) { SetPlayerToTeamColor(playerid); SetPlayerInterior(playerid,0); if(gTeam[playerid] == TEAM_VAGOS) { SetPlayerWorldBounds(playerid,x_max, x_min, y_max, y_min); GameTextForPlayer(playerid, "Kill the ~r~Ballas!" 6000,5); } else if(gTeam[playerid] == TEAM_BALLAS) { SetPlayerWorldBounds(playerid,x_max, x_min, y_max, y_min); GameTextForPlayer(playerid, "Kill the ~y~Vagos!", 6000,5); } return 1; } De functie “SetplayerWorldBounds” is bedoeld om te zorgen dat men niet naar een ander gebied gaat. Zet hieronder de ---- lijn en zet dan dit eronder: public ExitTheGameMode() { GameModeExit(); } En dan de finishing touch! public OnPlayerDeath(playerid, killerid, reason) { new deathstr[256]; new whodiedname[MAX_PLAYER_NAME+1]; new whokilledname[MAX_PLAYER_NAME+1]; new deathreasonstr[256]; GetPlayerName(playerid,whodiedname,MAX_PLAYER_NAME); GetWeaponName(reason,deathreasonstr,255); if(killerid == INVALID_PLAYER_ID) { if(strlen(deathreasonstr)) { format(deathstr,256,"%s died (%s)",whodiedname,deathreasonstr); } else { format(deathstr,256,"%s died",whodiedname); } SendClientMessageToAll(OBJECTIVE_COLOR, deathstr); } else { GetPlayerName(killerid,whokilledname,MAX_PLAYER_NAME); if(gTeam[killerid] != gTeam[playerid]) { // Valid kill if(strlen(deathreasonstr)) { format(deathstr,256,"%s was killed by %s (%s)",whodiedname,whokilledname,deathreasonstr); } else { format(deathstr,256,"%s was killed by %s",whodiedname,whokilledname); } SendClientMessageToAll(OBJECTIVE_COLOR, deathstr); SetPlayerScore(killerid,GetPlayerScore(killerid)+1); } else { // Team kill format(deathstr,256,"%s killed team-mate %s (%s)",whokilledname,whodiedname,deathreasonstr); SendClientMessageToAll(OBJECTIVE_COLOR, deathstr); } } return 1; } Credits go to kyeman’s script for this piece of code. Dit was dus mijn tutorial, ik hoop dat je er wat aan hebt, en voor vragen kan je altijd hier posten, mij PM’en of naar het SA-MP Scripting IRC kannaal gaan. Ik weet niet of het ingame ook werkt, ik ga er wel vanuit, maar als iemand een full script heeft, kan die dan even kijken of het nu werkt ? Tevens kunnen codes een beetje verpest zijn door de tag, in dat geval moet je ze even opnieuw typen . [b]:: Handy Link ::[/b] - http://stephantom2.st.funpic.de/experiment...a_samp-inc.html Reageren
Jarno Geplaatst: 16 april 2006 Rapport Geplaatst: 16 april 2006 Mooie tutorial. Hier zullen beginners veel aan hebben! Reageren
T@rget Geplaatst: 27 april 2006 Rapport Geplaatst: 27 april 2006 Ik heb het ook geprobeerd ik weet niet of het gelukt is ik moet nog testen ik had wel een tip: Voor vehicle en wapen ID's kun je GGMM gebruiken en voor auto's spawnen MTA Map Editor (het .map bestandje openen alles staat duidelijk aan gegeven) Reageren
BuLL3T^ Geplaatst: 2 mei 2006 Rapport Geplaatst: 2 mei 2006 (bewerkt) hey ik ben sinds 2 dagen aan het scripten en het gaat al best goed. ik heb al auto's en mensen kunnen plaatsen en dat ze wapens vast hebben met ammo enz. maar ik heb een belangerijk vraagje over de cars. er is een limiet toch? aan addstatic vehicle. mijn eerste vraag: weet iemand hoeveel het limiet daarvan is? 2) in mijn script staan minder auto's dan bij lvdm, maar mijnes doet het niet en die van lvdm wel.... dat is ook raar. ik dacht misschien ligt het aan die //Uber haxed dingen. die staan boven een paar rtijes van addstaticvehicle in lvdm.pawn file.(kijk maar eens.) wat betekent die uber haxed nou? 3) ik merk dat er teveel auto's zijn omdat als ik 5 auto's doe , kan ik hem wel spelen de script, maar als ik er veel meer doe. slaat hij af als hij aan het laden is(als hij aan het connecten is naar de server) hij slaat dan af en ik krijg een venstertje met report crash enz. dit staat er boven aan bij de foutmelding: Exception At Address: 0x004C8F24 Last SCM Opcode: 0x38B misschien iemand met hetzelfde probleem? alvast bedankt voor de tut deze tut heeft me veel geholpen! *edit* ik heb een server daar test ik me scripts* Bewerkt: 2 mei 2006 door BuLL3T^ Reageren
Le MrG Geplaatst: 9 mei 2006 Rapport Geplaatst: 9 mei 2006 (bewerkt) Late reactie maar het werkt niet E:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\src\pier51.pwn(114 -- 116) : error 001: expected token: ",", but found "-integer value-"E:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\src\pier51.pwn(116) : warning 215: expression has no effect E:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\src\pier51.pwn(116) : warning 215: expression has no effect E:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\src\pier51.pwn(116) : error 001: expected token: ";", but found ")" E:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\src\pier51.pwn(116) : error 029: invalid expression, assumed zero E:\Program Files\Rockstar Games\GTA San Andreas\samp\gamemodes\src\pier51.pwn(116) : fatal error 107: too many error messages on one line -- Ik heb de Errors zelf gefixed, nu nog kijken of hij niet crashed ingame ^^ -- Bewerkt: 9 mei 2006 door Le MrG Reageren
Xwa Geplaatst: 15 juli 2006 Rapport Geplaatst: 15 juli 2006 (bewerkt) Ik heb het gezet in een bestaand script en het werkt behalve een regeltje geeft hij 4 errors Dit regeltje wat is daar fout aan. if(gTeam[killerid] != gTeam[playerid]) { EDIT:Hier onder zie je de fouten die hij geeft (477) : error 017: undefined symbol "gTeam" (477) : warning 215: expression has no effect (477) : error 001: expected token: ";", but found "]" 477) : error 029: invalid expression, assumed zero 477) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.0.3367 Copyright © 1997-2005, ITB CompuPhase 4 Errors. Bewerkt: 15 juli 2006 door Xwa Reageren
BigT Geplaatst: 19 november 2006 Rapport Geplaatst: 19 november 2006 ik krijg error bij een script Could not find DPROP,dat is voor propertys,,ik moet zo een dprop.inc bestandje hebben,,heeft iemand die voor mij? Reageren
ICE-Spirit Geplaatst: 16 juni 2007 Rapport Geplaatst: 16 juni 2007 (bewerkt) Dit topic is waarschijnlijk aal een jaar oud, maar ik heb toch nog een vraagje: Hoe convert ik deze .pwn naar een .amx voor in de gamemode folder????? Watn als ik op compile druk, dan krijg ik iets van : 4 errors ofzo... Bewerkt: 16 juni 2007 door ICE-Spirit Reageren
Gangstaz Geplaatst: 27 december 2007 Rapport Geplaatst: 27 december 2007 ik snap niets van dat peds.ide ik heb m geopend in kladblok and ik kan niet vinden welke ID van de peds zijn van de Gluckin' bell en de Burger Shot, kan iemand me misschien ff de ID van die 2 geven. alvast dankuh Reageren
Sandra Geplaatst: 27 december 2007 Rapport Geplaatst: 27 december 2007 ===>>Deze<<=== site is makkelijker Reageren
Gangstaz Geplaatst: 28 december 2007 Rapport Geplaatst: 28 december 2007 ===>>Deze<<=== site is makkelijker jaah, geweldig, dankjuh Reageren
Gangstaz Geplaatst: 28 december 2007 Rapport Geplaatst: 28 december 2007 kheb nog 2 vraagjes kun je achtergrond muziek erbij doen, en zo ja, hoe dan? en waar en al wat moet je het bestand opslaan alvast danje Reageren
Sandra Geplaatst: 28 december 2007 Rapport Geplaatst: 28 december 2007 Je kan niet je eigen muziek afspelen, alleen sounds die bij San Andreas zitten. http://wiki.sa-mp.com/index.php/PlayerPlaySound ==>>sound-id's<<== Reageren
r.deroos Geplaatst: 23 maart 2008 Rapport Geplaatst: 23 maart 2008 eey ik heb alles gedaan zoals je het uitgelegd had. maar ik had van alle vagos grove gemaakt en van geel groen. maar dan krijg ik deze error C:\Documents and Settings\R. de Roos\Bureaublad\spellen\gta\sa mp server maken\gamemodes\Gang Battle.pwn(49) : warning 217: loose indentation C:\Documents and Settings\R. de Roos\Bureaublad\spellen\gta\sa mp server maken\gamemodes\Gang Battle.pwn(49) : error 029: invalid expression, assumed zeroC:\Documents and Settings\R. de Roos\Bureaublad\spellen\gta\sa mp server maken\gamemodes\Gang Battle.pwn(49) : error 017: undefined symbol "Ballas"C:\Documents and Settings\R. de Roos\Bureaublad\spellen\gta\sa mp server maken\gamemodes\Gang Battle.pwn(49) : error 017: undefined symbol "vs"C:\Documents and Settings\R. de Roos\Bureaublad\spellen\gta\sa mp server maken\gamemodes\Gang Battle.pwn(49) : fatal error 107: too many error messages on one lineCompilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase4 Errors. weet iemand wat ik moet doen?? ik heb namelijk geen ervaring met scripten ben een beginnner Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.