Das ist nicht möglich, dafür musst du einen NPC verwenden.
Beiträge von Jeffry
-
-
Dann kannst du es so machen:
CMD:garbage(playerid,params[])
{
if(IsPlayerConnected(playerid))
{
if(istdabei[playerid] == 0)
{
if(Spieler[playerid][pJob] == 1)
{
if(IsPlayerInAnyVehicle(playerid))
{
new veh = GetPlayerVehicleID(playerid);
for(new i = 0;i<sizeof(Muelllwagen);i++)
{
if(veh == Muelllwagen[i])
{
new rand = random(sizeof(bmx1));
new string[145], pID;
if(sscanf(params,"d",pID))return SendClientMessage(playerid,COLOR_GREY,"[Benutze] /garbage [SpielerID]");
if(wurdeangefragt[playerid] == 0)
{
inviteID[playerid] = pID;
format(string,sizeof(string),"Du hast %s (ID: %d) erfolgreich eine Anfrage gesendet, bitte warte bis er sie annehmt!",GetName(pID), inviteID[playerid]);
SendClientMessage(playerid,COLOR_BLUE,string);
format(string,sizeof(string),"%s hat dich angefragt, benutze /agarbage um die Anfrage anzunehmen",GetName(playerid));
SendClientMessage(inviteID[playerid],COLOR_BLUE,string);
wurdeangefragt[pID] = 1;
wurdeangefragtvon[pID] = playerid;
pMuellAuto[playerid] = veh;
new Float:vX,Float:vY,Float:vZ;
GetPosVorVeh(pMuellAuto[playerid], -10.0, vX, vY, vZ);
maxkubik[veh] = 15.0;
kubik[veh] = 0.0;
istdabei[playerid] = 1;
checkpointgarbage[playerid] = playerid;
bmxo[playerid] = SetPlayerCheckpoint(checkpointgarbage[playerid],bmx1[rand][0],bmx1[rand][1],bmx1[rand][2],3);
return 1;
}
}
}
SendClientMessage(playerid, COLOR_RED, "Du bist in keinem Müllwagen.");
return 1;
}
}
else return SendClientMessage(playerid, COLOR_RED, "Du bist kein Müllmann.");
}
}
return 1;
}CMD:agarbage(playerid,params[])
{
if(wurdeangefragt[playerid] == 0) return SendClientMessage(playerid, COLOR_RED, "Du wurdest nicht angefragt.");
if(!IsPlayerConnected(wurdeangefragtvon[playerid]))
{
wurdeangefragt[playerid] = 0;
return SendClientMessage(playerid, COLOR_RED, "Der Anfragende ist nicht mehr online.");
}
SendClientMessage(wurdeangefragtvon[playerid], COLOR_GREEN, "Die Anfrage wurde angenommen!");
new string[145];
format(string, sizeof(string), "%s (ID: %d) hat deine Anfrage angenommen.", GetName(playerid), playerid);
SendClientMessage(inviteID[playerid],COLOR_BLUE,string);
return 1;
} -
/*CMD:accept garbage(playerid,params[])
Die Lücke hier zwischen accept und garbage geht nicht.
wurdeangefragt[pId] = 1; // Dein Code
pId ist im Befehl nirgends definiert, das dürfte dir also einen Fehler ausgeben.
Wie sieht denn der Befehl für das Absenden der Frage aus?
PS:
Poste deinen PWN Codes bitte mal korrekt eingerückt.
Entweder über den Quelltext Editor (erster Button oben vor den beiden Pfeilen) oder über den [code=c][/code] Tag. -
Hi, dich gibt's ja auch noch!

Lange nicht gesehen.Das sieht soweit alles gut aus auf den ersten Blick.
Irgendwas mag er hier aber nicht:
[17:34:57] [DEBUG] CResultSet::Create(connection=0x91385c8, query_str='SELECT * FROM `accounts` WHERE `Name` = '[AMB]Manyula' LIMIT 1')Existiert denn der Datensatz in der Tabelle accounts? Kannst du da eventuell mal einen Screenshot schicken?
-
new globalVar[2];
zu:
new globalVar[MAX_PLAYERS][3]; -
Wenn du einen kurzen Lag hast, dann bringt es dir nicht wirklich was, da du dann trotzdem ins Fahrzeug reingelangst.
Das stimmt, ist aber der Ausnahmefall.
Wenn man es wirklich ganz korrekt machen will, dann muss man es so machen (so habe ich es seinerzeit auf meinem Server gehabt, das hat nie zu unerlaubter Nutzung geführt).
1. OnPlayerEnterVehicle - Methode
2. Bei OnPlayerStateChange ebenfalls prüfen und dann mit RemovePlayerFromVehicle
3. Zusätzlich per Timer prüfen, falls nicht erlaubt, das Fahrzeug an die Stelle erneut spawnenLieber bei OnPlayerStateChange irgendwie.
Alleine würde ich das auch nicht nutzen, das klappt auch nicht immer. Auf Grund dessen habe ich damals mein System auf'm Server wie oben beschrieben umgebaut.
@Drai
Du könntest es also zur Sicherheit noch so machen:
for(new i=0; i<sizeof(FahrschulCar); i++)
{
if(vehicleid!=FahrschulCar[i])continue;
if(InFahrschule[playerid])
{
if(FahrschulCP[playerid]==0)
{
//Starten
SetPlayerCheckpoint(playerid, FahrschulCPs[FahrschulCP[playerid]][cpx], FahrschulCPs[FahrschulCP[playerid]][cpy], FahrschulCPs[FahrschulCP[playerid]][cpz], 4.0);
JobCar[playerid]=vehicleid;
PlayerTextDrawShow(playerid, TachoTd[playerid][0]);
PlayerTextDrawShow(playerid, TachoTd[playerid][1]);
PlayerTextDrawShow(playerid, TachoTd[playerid][2]);
ClearPlayerChat(playerid);
ClearPlayerChat(playerid);
SendClientMessage(playerid, HBLAU, "* Die Fahrstunde hat begonnen. Bitte achte unten Links auf die Karte, dort wird dein Checkpoint angezeigt.");
SendClientMessage(playerid, HBLAU, "* Fahre alle Checkpoints ab, und achte das dein Tempomat nicht mehr als 80 km/h anzeigt!");
SendClientMessage(playerid, HBLAU, "* Du darfst innerhalb der Stadt max. 80 KM/H fahren. Außerhalb begrenzt sich die Geschwindigkeit auf 110 KM/H");
SendClientMessage(playerid, HBLAU, "* Es ist Pflicht die rechte Fahrspur zu benutzen!");
spv(playerid,"TachoTimerID",SetTimerEx("TachoUpdate", 200, true, "i", playerid));
}
return 1;
}
else
{
RemovePlayerFromVehicle(playerid);
SendClientMessage(playerid,GRAU,"Du hast keine Schlüssel für dieses Fahrzeug!");
break;
}
} -
Danke Jeffry, es hat geklappt, aber woran hast du gesehen, dass ich mein Plugin aktualisieren muss?
Wenn sehr oft der Run Time Error 20 (Invalid index parameter (bad entry point)) kommt, dann deutet das in 99% aller Fälle auf ein veraltetes Crashdetect Plugin hin, welches mit der neuen SA-MP Version nicht klar kommt und daher diesen Fehler ausgibt (fälschlicherweise).
Das kommt entweder durch Jeffry's Erfahrung
Ich tendiere hierzu

-
Das kannst du hiermit machen:
http://forum.sa-mp.com/showthread.php?t=343172 -
(Float:minx, Float:miny, Float:maxx, Float:maxy)
=>
Commerce = GangZoneCreate(1392.0396,-1866.5282,1558.8539,-1727.6683); -
-
Was gibt der MySQL Log aus?
-
format(string, sizeof(string),"*No-DM Zone* Du wurdest von %s in Commerce angegriffen (%d Schaden.)", GetName(playerid), floatround(amount));
-
so?
So:
public OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart)
{
if(issuerid != INVALID_PLAYER_ID)
{
if(Spieler[issuerid][pHitsound] == 1)
{
PlayerPlaySound(issuerid, 17802, 0.0, 0.0, 0.0);
}
new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
if(x > 1392.0396 && x < 1558.8539 && y > -1866.5282 && y < -1727.6683 && z > 0 && z < 100)
{
format(string, sizeof(string),"*No-DM Zone* Du wurdest von %s in Commerce angegriffen (%.0f Schaden.)", GetName(playerid), amount);
SendClientMessage(playerid, COLOR_ANNOUNCE, string);
}
}
return 1;
} -
Aktualisiere dein Crashdetect Plugin:
http://forum.sa-mp.com/showthread.php?t=262796 -
Unter was soll man das einfügen wen man Fragen darf.
http://wiki.sa-mp.com/wiki/OnPlayerTakeDamage
Wie lasse ich den schaden auslesen?
Der Parameter "amount" in OnPlayerTakeDamage gibt dir den Schaden mit.
==========================================
Hast du da vielleicht ein kleinen Codeschnippel für mich wegen dem Dialog und den Text setzen.
Hätte ich auch gern
Externer Inhalt www.youtube.comInhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.Code dazu:
//©Jeffry - 01.12.2016
#include <a_samp>
#pragma dynamic 10000
new pTypeTimer[MAX_PLAYERS] = {-1,...};public OnPlayerCommandText(playerid, cmdtext[])
{
if(!strcmp(cmdtext, "/dialog")) TypePlayerDialog(playerid, 5142, DIALOG_STYLE_MSGBOX, "Test", "Diese Nachricht wird sich nach und nach aufbauen.\nAuch der Zeilenumbruch funktioniert.\n\nEnde =)", "Ok", "");
return 0;
}public OnPlayerDisconnect(playerid, reason)
{
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);
pTypeTimer[playerid] = -1;
return 1;
}stock TypePlayerDialog(playerid, dialogid, style, caption[], string[], button1[], button2[])
{
if(!IsPlayerConnected(playerid) || IsPlayerNPC(playerid)) return 0;
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);
new str[3];
format(str, sizeof(str), "%c", string[0]);
ShowPlayerDialog(playerid, dialogid, style, caption, str, button1, button2);
if(string[1] == '\0' || !strlen(string[1])) return 0;
SetPVarInt(playerid, "t_dialogid", dialogid);
SetPVarInt(playerid, "t_style", style);
SetPVarString(playerid, "t_caption", caption);
SetPVarString(playerid, "t_string", str);
SetPVarString(playerid, "t_rest", string[1]);
SetPVarString(playerid, "t_button1", button1);
SetPVarString(playerid, "t_button2", button2);
pTypeTimer[playerid] = SetTimerEx("DialogTypeTimer", 120, 1, "d", playerid);
return 1;
}forward DialogTypeTimer(playerid);
public DialogTypeTimer(playerid)
{
new dialogid, style, caption[64], string[1024], rest[1024], button1[32], button2[32];
dialogid = GetPVarInt(playerid, "t_dialogid");
style = GetPVarInt(playerid, "t_style");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));
GetPVarString(playerid, "t_string", string, sizeof(string));
GetPVarString(playerid, "t_rest", rest, sizeof(rest));
GetPVarString(playerid, "t_button1", button1, sizeof(button1));
GetPVarString(playerid, "t_button2", button2, sizeof(button2));
new str[1024];
//Ein Buchstabe hinzufügen
format(str, sizeof(str), "%s%c", string, rest[0]);
ShowPlayerDialog(playerid, dialogid, style, caption, str, button1, button2);
SetPVarString(playerid, "t_string", str);
//Den hinzugefügten Buchstabe aus dem Rest entfernen
SetPVarString(playerid, "t_rest", rest[1]);
if(rest[1] == '\0' || !strlen(rest[1]))
{
if(pTypeTimer[playerid] != -1) KillTimer(pTypeTimer[playerid]);
pTypeTimer[playerid] = -1;
}
ReshowTypeDialog(playerid);
return 1;
}stock ReshowTypeDialog(playerid)
{
new dialogid, style, caption[64], string[1024], button1[32], button2[32];
dialogid = GetPVarInt(playerid, "t_dialogid");
style = GetPVarInt(playerid, "t_style");
GetPVarString(playerid, "t_caption", caption, sizeof(caption));
GetPVarString(playerid, "t_string", string, sizeof(string));
GetPVarString(playerid, "t_button1", button1, sizeof(button1));
GetPVarString(playerid, "t_button2", button2, sizeof(button2));
ShowPlayerDialog(playerid, dialogid, style, caption, string, button1, button2);
return 1;
}
//©Jeffry - 01.12.2016In OnDialogResponse kann so abgefragt werden, ob der Dialog vollständig da ist:
if(pTypeTimer[playerid] != -1)
{
//Dialog nicht vollständig, warte ab und zeige aktuellen Stand an
ReshowTypeDialog(playerid);
return 1;
} -
if(x > 1392.0396 && x < 1558.8539 && y > -1866.5282 && y < -1727.6683 && z > 0 && z < 100)
{
//In Zone
//Beachte, -1866 ist KLEINER als -1727
} -
[17:15:43] Loading plugin: mysql
[17:15:44] Failed.Dein MySQL Plugin wird nicht geladen.
Lade dir dieses All-In-One Paket herunter und installiere es:
http://www.chip.de/downloads/A…ne-Runtimes_37449838.html -
OnPlayerStateChange:
for(new i=0; i<sizeof(FahrschulCar); i++)
{
if(vehicleid!=FahrschulCar[i])continue;
if(InFahrschule[playerid])
{
if(FahrschulCP[playerid]==0)
{
//Starten
SetPlayerCheckpoint(playerid, FahrschulCPs[FahrschulCP[playerid]][cpx], FahrschulCPs[FahrschulCP[playerid]][cpy], FahrschulCPs[FahrschulCP[playerid]][cpz], 4.0);
JobCar[playerid]=vehicleid;
PlayerTextDrawShow(playerid, TachoTd[playerid][0]);
PlayerTextDrawShow(playerid, TachoTd[playerid][1]);
PlayerTextDrawShow(playerid, TachoTd[playerid][2]);
ClearPlayerChat(playerid);
ClearPlayerChat(playerid);
SendClientMessage(playerid, HBLAU, "* Die Fahrstunde hat begonnen. Bitte achte unten Links auf die Karte, dort wird dein Checkpoint angezeigt.");
SendClientMessage(playerid, HBLAU, "* Fahre alle Checkpoints ab, und achte das dein Tempomat nicht mehr als 80 km/h anzeigt!");
SendClientMessage(playerid, HBLAU, "* Du darfst innerhalb der Stadt max. 80 KM/H fahren. Außerhalb begrenzt sich die Geschwindigkeit auf 110 KM/H");
SendClientMessage(playerid, HBLAU, "* Es ist Pflicht die rechte Fahrspur zu benutzen!");
spv(playerid,"TachoTimerID",SetTimerEx("TachoUpdate", 200, true, "i", playerid));
}
return 1;
}
}OnPlayerEnterVehicle:
for(new i=0; i<sizeof(FahrschulCar); i++)
{
if(vehicleid!=FahrschulCar[i])continue;
if(!InFahrschule[playerid])
{
SendClientMessage(playerid,GRAU,"Du hast keine Schlüssel für dieses Fahrzeug!");
TogglePlayerControllable(playerid, false);
TogglePlayerControllable(playerid, true);
break;
}
}So kommt man erst gar nicht in das Fahrzeug, und erst wenn das Einsteigen fertig ist, wird der Checkpoint erstellt.
-
Brauche immernoch Hilfe
Versuche es so:
HatEinHaus(playerid)
{
for(new i = 0; i < MAX_HOUSE; i++)
{
if(hInfo[i][h_ID] == 0) continue;
if(!strlen(hInfo[i][h_besitzer])) continue;
if(!strcmp(hInfo[i][h_besitzer], getPlayerName(playerid), true, 3)) return 1;
}
return 0;
} -
Mit der ersten Frage meinte ich eigentlich, das man dauerhaft Sprinten kann, ohne das man Pause machen muss.
Dazu wäre mir nichts außer Mods bekannt.
Edit: Ja, per Respawn würde es bedingt gehen, das sieht aber wahrscheinlich nicht so schön aus.
Das würde ich dann eventuell per Befehl machen, sprich sowas wie /luft.Hast du da vielleicht ein kleinen Codeschnippel für mich wegen dem Dialog und den Text setzen.
Kann ich dir heute Abend geben, wenn ich zu Hause bin.
Für jeden Spieler einzeln - per Timer?
Das.
Zwischen 1 und 5 Minuten ist angebracht.