GTAvision.com - Forum - Grand Theft Auto News, Downloads, Community and more...
Position: Grand Theft Auto: San Andreas » Multiplayer » [SAMP v1 & v2] PutPlayerInVehicle command? » Druckansicht
|
[GPRS]MrWitz, 09.06.2007, 11:25
|
Mir wurde gesagt solch ein Command wäre nicht schwer aber ich bekomme den nicht hin... (bin wohl doof :o) Könnte mir den vielleicht einer scripten? Ware echt net 
gruß Chris
|
|
Recycler, 12.06.2007, 15:43
|
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| if (strcmp(cmd, "/putplayer", true) == 0) { new id, vid, dir; new tmp[256]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /putplayer [playerid] [vehicleid]"); return 1; } id = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /putplayer [playerid] [vehicleid]"); return 1; } vid = strval(tmp); if (IsPlayerConnected(id)) { for (new i; i < GetMaxPlayers(); i++) { if (IsPlayerConnected(i) && !IsPlayerDriver(i, vid)) dir++; } if (dir == GetMaxPlayers()) PutPlayerInVehicle(id, vid, 0); else SendClientMessage(playerid, COLOR_BUMS, "Da it schon jemmand im Otto!"); // :D } else SendClientMessage(playerid, COLOR_DEATH, "Der Spieler ist nicht verbunden!"); return 1; }
stock IsPlayerDriver(playerid, vehicleid) { if (IsPlayerConnected(playerid) && IsPlayerInVehicle(playerid, vehicleid) && GetPlayerState(playerid ) == PLAYER_STATE_DRIVER) return 1; return 0; }
|
MfG Recycler
|
|
[GPRS]MrWitz, 12.06.2007, 15:47
|
Oh danke, kann man das auch machen mit SitzID, nicht nur mit fahrerID. Aber ich versuche erst mal ob ich das selbst hinbekomme... wenn nicht schreibe ich nochmal
EDIT: Hm...
Habe errors bei dem einfügen von dem Command:
Code: 1 2 3 4 5 6 7 8
|
~partyhouse.pwn(310) : error 017: undefined symbol "strtok" ~partyhouse.pwn(310) : error 033: array must be indexed (variable "tmp") ~partyhouse.pwn(316) : error 017: undefined symbol "strtok" ~partyhouse.pwn(316) : error 033: array must be indexed (variable "tmp") Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
|
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| if (strcmp(cmdtext, "/ppiv", true) == 0) { new id, vid, dir; new tmp[256]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ppiv [playerid] [vehicleid]"); return 1; } id = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ppiv [playerid] [vehicleid]"); return 1; } vid = strval(tmp); if (IsPlayerConnected(id)) { for (new i; i < GetMaxPlayers(); i++) { if (IsPlayerConnected(i) && !IsPlayerDriver(i, vid)) dir++; } if (dir == GetMaxPlayers()) PutPlayerInVehicle(id, vid, 0); else SendClientMessage(playerid, COLOR_ORANGE, "Da ist schon jemand im Fahrzeug!"); } else SendClientMessage(playerid, COLOR_RED, "Der Spieler ist nicht verbunden!"); return 1; }
|
|
|
Recycler, 12.06.2007, 15:48
|
Unpraktisch, du weißt ja nicht auswendig wieviele Sitze jedes Car hat 
MfG Recycler
EDIT:
Du brauchst die Funktion "strtok"
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| strtok(const string[], &index) { new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; }
new offset = index; new result[20]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; return result; }
|
Sollte man eigentlich haben...
|
|
[GPRS]MrWitz, 12.06.2007, 15:55
|
Naja das ist doch egal wenigstens man kann zu 2. ~ 5. in ein Fahrzeug in das man nicht rein kommt
Hab meinen vorigen beitrag editiert....
... danke
|
|
[GPRS]MrWitz, 12.06.2007, 16:11
|
Habe mal versucht die SitzID dazuzufügen nur das playerid habe ich gelöscht.
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| if (strcmp(cmdtext, "/ppiv", true) == 0) { new vid, sit, dir; new tmp[256]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ppiv [vehicleID] [sitzID]"); return 1; } vid = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ppiv [vehicleID] [sitzID]"); return 1; } sit = strval(tmp); if (IsPlayerConnected(playerid)) { for (new i; i < GetMaxPlayers(); i++) { if (IsPlayerConnected(i) && !IsPlayerDriver(i, vid)) dir++; } if (dir == GetMaxPlayers()) PutPlayerInVehicle(playerid, vid, sit); } else SendClientMessage(playerid, COLOR_RED, "Der Spieler ist nicht verbunden!"); return 1; }
|
doch ich bekomme 2 Errors die ich bei dem Normalen auch noch hatte.
Code: 1 2 3 4 5 6
| ~partyhouse.pwn(329) : error 035: argument type mismatch (argument 2) ~partyhouse.pwn(335) : error 035: argument type mismatch (argument 2) Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
|
Diese argument type mismatch kommt bei beiden hier: tmp = strtok(cmdtext, idx);
was musss ich damit machen?
greeting
|
|
Recycler, 12.06.2007, 16:22
|
In OnPlayerCommandText folgendes einfügen:
Code: 1 2
| new cmd[256], idx; cmd = strtok(cmdtext, idx); |
Und in der ersten Zeile vom Command "cmdtext" durch "cmd" ersetzen.
MfG Recycler
|
|
[GPRS]MrWitz, 12.06.2007, 16:24
|
Danke jetzt hat es geklappt, und das mit der SitzID das ich geändert hatte das ist soweit richtig?
|
|
Recycler, 12.06.2007, 16:26
|
Ja, das ist richtig so. Allerdings musst du dich nicht wundern, wenn der Server crasht, falls du dich auf einen Sitz setzen willst den es garnicht gibt 
MfG Recycler
|
|
[GPRS]MrWitz, 12.06.2007, 16:57
|
Das funktioniert irgendwie nicht... wen ich In-Game den CMD eingeben sagt der bei jedem auto "Da ist schon jemand im Fahrzeug!"
|
|
Recycler, 12.06.2007, 19:41
|
Ja, ich habe aus Versehen eine Funktion verwechselt 
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| if (strcmp(cmdtext, "/ppiv", true) == 0) { new vid, sit, dir; new tmp[256]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ppiv [vehicleID] [sitzID]"); return 1; } vid = strval(tmp); tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ppiv [vehicleID] [sitzID]"); return 1; } sit = strval(tmp); if (IsPlayerConnected(playerid)) { for (new i; i < GetOnlinePlayers(); i++) { if (IsPlayerConnected(i) && !IsPlayerDriver(i, vid)) dir++; } if (dir == GetOnlinePlayers()) PutPlayerInVehicle(playerid, vid, sit); } else SendClientMessage(playerid, COLOR_RED, "Der Spieler ist nicht verbunden!"); return 1; }
stock IsPlayerDriver(playerid, vehicleid) { if (IsPlayerConnected(playerid) && IsPlayerInVehicle(playerid, vehicleid) && GetPlayerState(playerid ) == PLAYER_STATE_DRIVER) return 1; return 0; }
stock GetOnlinePlayers() { new players; for (new i; i < MAX_PLAYERS; i++) if (IsPlayerConnected(i)) players++; return players; }
|
Jetzt sollte es funktionieren.
MfG Recycler
|
|
Lippi, 04.12.2007, 15:22
|
hi ich hätte da ne Frage kann man es auch so machen das wenn man Z.B. als COP wenn festnehmen will dann schreibt /a (arrest) und dann ist der im Polizei Auto drin... geht so was auch?? Also das man net die ID des Autos schreiben muss..
|
|
dödel, 04.12.2007, 15:37
|
Code: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| <?
if(strcmp(cmd, "/arrest", true) == 0) { new arrest; new tmp[256]; tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_ORANGE, "Benutzung: /arrest [Spieler-ID]"); return 1; } if(IsPlayerAdmin(playerid)) { arrest = strval(tmp); PutPlayerInVehicle(arrest, GetPlayerVehicleID(playerid), 3); TogglePlayerContraollable(arrest, false); new arrestname[MAX_PLAYERS]; GetPlayerName(arrest, arrestname, sizeof(arrestname)); new arreststring[256]; format(arreststring, sizeof(arreststring), "%s wurde verhaftet", arrestname); SendClientMessageToAll(COLOR_YELLOW, arreststring); } else SendClientMessage(playerid, COLOR_RED, "Du bist nicht als Admin eingeloggt !"); return 1; }
?> |
Naja als /unarrest reicht ja schon TogglePlayerControllable und RemovePlayerFromVehicle falls er noch in einem ist
|
|
Lippi, 04.12.2007, 16:00
|
und wie muss ich das ändern wenn das nu die Polizei machen kann...?? Weil die haben ja net das Rcon PW!!
|
|
dödel, 04.12.2007, 16:03
|
Musst du wissen, woher soll ich deine Variablen der Polizei kennen 
Eigentlich:
if(bulle[playerid] == 1) statt if(IsPlayerAdmin(playerid))
is doch klar
|
|
Lippi, 04.12.2007, 16:15
|
k ok thx dann werd ich jetzt wohl teams machen müssen... nur ganz kleine Frage kann man Teams so machen das net jeder die nehmen kann??
|
|
dödel, 04.12.2007, 17:44
|
Und wie immer wird die Suchfunktion missachtet 
AdminSkin SUCHEN !
|