Mach das
return 1;
in Zeile 14 weg.
Außerdem musst du KMTimer auch mit [playerid] als Array schreiben, sonst wird es für den nächsten Spieler überschrieben und du kannst den Timer für den ersten Spieler nicht mehr beenden.
Mach das
return 1;
in Zeile 14 weg.
Außerdem musst du KMTimer auch mit [playerid] als Array schreiben, sonst wird es für den nächsten Spieler überschrieben und du kannst den Timer für den ersten Spieler nicht mehr beenden.
Mach das
in Zeile 14 weg.
Außerdem musst du KMTimer auch mit [playerid] als Array schreiben, sonst wird es für den nächsten Spieler überschrieben und du kannst den Timer für den ersten Spieler nicht mehr beenden.
Also muss ich
statt
Das mit dem Return hab ich dann gerade durchs probieren auch festgestellt xD
MfG
XonarZ
Also muss ich
Ja.
ocmd:find(playerid, params[])
{
if(!IsLoggedIn(playerid))return 1;
if(!(Spieler[playerid][pJob] == 10))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du bist kein Detektiv.");
new pID, string[128], Float:pos[3], ort[36];
if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/find [SpielerID/Name]");
if(pID == playerid)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst dich nicht selber orten.");
if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_GREY, ERROR_OFFLINE);
if(IsPlayerNPC(pID))return 1;
if(!(Spieler[pID][pLoggedIn]))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist noch nicht eingeloggt.");
if(pDetektivAbkling[playerid] > 0)
{
format(string, sizeof(string), "{AFAFAF}Du musst noch %d Sekunden warten bis du jemanden orten kannst.", pDetektivAbkling[playerid]);
SendClientMessage(playerid, COLOR_WHITE, string);
return 1;
}
if(GetPlayerInterior(pID) > 0)
{
GetPlayerPos(pID, pos[0], pos[1], pos[2]);
GetPlayer3DZone(playerid, ort, 36);
SetPlayerCheckpoint(playerid, pos[0], pos[1], pos[2], 3);
format(string, sizeof(string), "{AFAFAF}Der Spieler befindet sich in Gebäudekomplex %d.%d", GetPlayerInterior(pID), GetPlayerVirtualWorld(pID));
SendClientMessage(playerid, COLOR_WHITE, string);
GivePlayerDeteSkill(playerid, 1);
switch(Spieler[playerid][pDetektivSkill])
{
case 1: pDetektivAbkling[playerid] = 120;
case 2: pDetektivAbkling[playerid] = 90;
case 3: pDetektivAbkling[playerid] = 60;
case 4: pDetektivAbkling[playerid] = 30;
case 5: pDetektivAbkling[playerid] = 5;
}
}
else if(GetPlayerInterior(pID) == 0)
{
GetPlayerPos(pID, pos[0], pos[1], pos[2]);
GetPlayer3DZone(playerid, ort, 36);
SetPlayerCheckpoint(playerid, pos[0], pos[1], pos[2], 3);
format(string, sizeof(string), "{AFAFAF}Der Spieler befindet sich in %s", ort);
SendClientMessage(playerid, COLOR_WHITE, string);
GivePlayerDeteSkill(playerid, 1);
switch(Spieler[playerid][pDetektivSkill])
{
case 1: pDetektivAbkling[playerid] = 120;
case 2: pDetektivAbkling[playerid] = 90;
case 3: pDetektivAbkling[playerid] = 60;
case 4: pDetektivAbkling[playerid] = 30;
case 5: pDetektivAbkling[playerid] = 5;
}
}
return 1;
}
Alles anzeigen
Hey, Kurze frage.
Wie kann ich die Position meinen Partner von einem Andern spieler zeigen?
Heißt: /showpos [Mein Partner] [Von dem Spieler den ich Orte]
Alles anzeigen
CodeAlles anzeigenocmd:find(playerid, params[]) { if(!IsLoggedIn(playerid))return 1; if(!(Spieler[playerid][pJob] == 10))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du bist kein Detektiv."); new pID, string[128], Float:pos[3], ort[36]; if(sscanf(params, "u", pID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/find [SpielerID/Name]"); if(pID == playerid)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst dich nicht selber orten."); if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_GREY, ERROR_OFFLINE); if(IsPlayerNPC(pID))return 1; if(!(Spieler[pID][pLoggedIn]))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der Spieler ist noch nicht eingeloggt."); if(pDetektivAbkling[playerid] > 0) { format(string, sizeof(string), "{AFAFAF}Du musst noch %d Sekunden warten bis du jemanden orten kannst.", pDetektivAbkling[playerid]); SendClientMessage(playerid, COLOR_WHITE, string); return 1; } if(GetPlayerInterior(pID) > 0) { GetPlayerPos(pID, pos[0], pos[1], pos[2]); GetPlayer3DZone(playerid, ort, 36); SetPlayerCheckpoint(playerid, pos[0], pos[1], pos[2], 3); format(string, sizeof(string), "{AFAFAF}Der Spieler befindet sich in Gebäudekomplex %d.%d", GetPlayerInterior(pID), GetPlayerVirtualWorld(pID)); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerDeteSkill(playerid, 1); switch(Spieler[playerid][pDetektivSkill]) { case 1: pDetektivAbkling[playerid] = 120; case 2: pDetektivAbkling[playerid] = 90; case 3: pDetektivAbkling[playerid] = 60; case 4: pDetektivAbkling[playerid] = 30; case 5: pDetektivAbkling[playerid] = 5; } } else if(GetPlayerInterior(pID) == 0) { GetPlayerPos(pID, pos[0], pos[1], pos[2]); GetPlayer3DZone(playerid, ort, 36); SetPlayerCheckpoint(playerid, pos[0], pos[1], pos[2], 3); format(string, sizeof(string), "{AFAFAF}Der Spieler befindet sich in %s", ort); SendClientMessage(playerid, COLOR_WHITE, string); GivePlayerDeteSkill(playerid, 1); switch(Spieler[playerid][pDetektivSkill]) { case 1: pDetektivAbkling[playerid] = 120; case 2: pDetektivAbkling[playerid] = 90; case 3: pDetektivAbkling[playerid] = 60; case 4: pDetektivAbkling[playerid] = 30; case 5: pDetektivAbkling[playerid] = 5; } } return 1; }
Hey, Kurze frage.
Wie kann ich die Position meinen Partner von einem Andern spieler zeigen?
Heißt: /showpos [Mein Partner] [Von dem Spieler den ich Orte]
Als "Grundbasis" wie folgt:
ocmd:showpos(playerid, params[])
{
new pID, pID2;
if(sscanf(params, "uu", pID, pID2)) return SendClientMessage(playerid, COLOR, "Benutze /showpos [POSITION AN WEN SENDEN] [POSITION VON WEM]");
new Float:px, Float:py, Float:pz, Float:pr;
GetPlayerPos(pID2, px, py, pz);
GetPlayerFacingAngle(pID2, pr);
//pID = dein Partner
//pID2 = von dem die Position ermittelt werden soll
//die Koordinaten werden somit in px, py, pz und pr gespeichert
return 1;
}
Alles anzeigen
Die Koordinaten kannst du nun verwenden wie du willst.
Mit freundlichen Grüßen
XonarZ
Warum sollte er seinen ganzen Befehl neu machen?
Machs einfach so:
new ShowID;
if(sscanf(params, "uu", ShowID, pID))return SendClientMessage(playerid, COLOR_WHITE, "{247BA6}* Benutze: {00FF00}/find [Partner] [SpielerID/Name]");
Und bei den "Der Spieler befindet sich in:" Nachrichten fügst du einfach noch das hinzu:
SendClientMessage(ShowID, COLOR_WHITE, string);
Warum sollte er seinen ganzen Befehl neu machen?
Weil sein anderer befehl /find ist und nicht /showpos
Außerdem sollte er meins nur als "Grundbasis" nehmen, weil so wie ich es verstanden habe, wollte er den Marker für seinen Kollegen setzen ... (vermutlich damit der Fahrer nicht Befehle eingeben muss und der immer langsamer wird)
Wie kann ich einbauen wenn ich bsp. /kwertwer schreibe da steht "Der Befehl /kwertwer wurde nicht gefunden." ?
Wie kann ich einbauen wenn ich bsp. /kwertwer schreibe da steht "Der Befehl /kwertwer wurde nicht gefunden." ?
Du schreibst unter OnPlayerCommandText vor die schließende Klammer statt ein return 1;
return SendClientMessage(playerid, COLOR, "TEXT");
Wie kann ich einbauen wenn ich bsp. /kwertwer schreibe da steht "Der Befehl /kwertwer wurde nicht gefunden." ?
Welchen Befehlsprozessor benutzt du denn? (ocmd, zcmd, etc.)
Was ich mich gerade frage ist, wenn 2 Spieler das selbe House Interior haben, können sie
sich doch sehen. Gibst da möglichkeiten das Vorzubeugen
Was ich mich gerade frage ist, wenn 2 Spieler das selbe House Interior haben, können sie
sich doch sehen. Gibst da möglichkeiten das Vorzubeugen
Kannst du Vorbeugen, in dem du die Spieler in eine Virtuelle setzt, z.B auf die, die dass Haus als ID in der Datenbank hat.
So sehen sich nur Spieler, die in dem gleichen Haus sind.
MfG.
Genau, das was FlixiDNA gesagt hat.
[wiki]SetPlayerVirtualWorld[/wiki]
In verschiedenen virtuellen Welten sieht man sich nichtmehr.
Ah cool danke euch beide, wusste nicht, dass das in so einem umfang möglich ist.
Hatte irgendwie immer nur diese Interior IDs in Erinnerung wo wenn man dann
eigentlich in Interior 0 war diese ganzen Gebäude Umrisse gesehen hat.
Warum wird mir der zweite Checkpoint angezeigt aber der dritte dann nicht ?
public OnPlayerEnterCheckpoint(playerid)
{
if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP1[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP1[playerid]);
StrasenreinigerLinie1CP2[playerid] = CreateDynamicCP(1807.0380,-1734.5571,13.1156, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP2[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP2[playerid]);
StrasenreinigerLinie1CP3[playerid] = CreateDynamicCP(1845.6852,-1754.7279,13.1079, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP3[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP3[playerid]);
StrasenreinigerLinie1CP4[playerid] = CreateDynamicCP(1959.2983,-1772.2649,13.1079, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP4[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP4[playerid]);
StrasenreinigerLinie1CP5[playerid] = CreateDynamicCP(2015.0427,-1814.3308,13.1078, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP5[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP5[playerid]);
StrasenreinigerLinie1CP6[playerid] = CreateDynamicCP(2079.1382,-1853.1117,13.1079, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP6[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP6[playerid]);
StrasenreinigerLinie1CP7[playerid] = CreateDynamicCP(1987.8251,-1929.8328,13.1079, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP7[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP7[playerid]);
StrasenreinigerLinie1CP8[playerid] = CreateDynamicCP(1824.4017,-1857.2285,13.1391, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP8[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP8[playerid]);
StrasenreinigerLinie1CP9[playerid] = CreateDynamicCP(1810.0348,-1729.9315,13.1159, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP9[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP9[playerid]);
StrasenreinigerLinie1CP10[playerid] = CreateDynamicCP(1758.0972,-1700.6636,13.2167, 5, -1, -1, playerid);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Fahre zum nächsten Checkpoint.");
}else if(IsPlayerInDynamicCP(playerid, StrasenreinigerLinie1CP10[playerid]))
{
DestroyDynamicCP(StrasenreinigerLinie1CP10[playerid]);
new vID = GetPlayerVehicleID(playerid);
RemovePlayerFromVehicle(playerid);
SetVehicleToRespawn(vID);
SendClientMessage(playerid, COLOR_GELB, "Job"HTML_WEIS": Du hast deine Linie beendet.");
new gehalt;
gehalt = randomEx(750, 1300);
new String[256];
format(String, sizeof(String), "Job"HTML_WEIS": Du hast %d$ verdient.", gehalt);
Spieler[playerid][pJobLohn] = gehalt;
SendClientMessage(playerid, COLOR_GELB, String);
Spieler[playerid][pIsInJob] = false;
}
return 1;
}
Alles anzeigen
@Chiller.502
Ich glaube es liegt an der else if abfrage ab dem 3. Checkpoint
Ansonsten sieht man ja nichts was darauf hinweisen könnte.
Was soll daran nicht stimmen?
Die ersten zwei gehen ja das 3. geht ja nicht.
benutze mal anstatt else if nur if
geht es jetzt?
Heyho
Ich hab da son kleinen "Warning" eigentlich sind warnings ja nichts schlimmes, nur sieht es dennoch hässlich aus bei einem Selfmade ![]()
...selfmade.pwn(349) : warning 213: tag mismatch
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
1 Warning.
-> Dies ist die Zeile -->if(isCarAnAhCar(vID) == false){
new string[128];
format(string, sizeof(string), "%s", mInfo[vModel][mName]);
PlayerTextDrawSetString(playerid, Tacho_TD[playerid][9], string);
PlayerTextDrawSetPreviewModel(playerid, Tacho_TD[playerid][1], GetVehicleModel(vID));
format(string, sizeof(string), "%s", mInfo[vModel][fuelTyp]);
PlayerTextDrawSetString(playerid, Tacho_TD[playerid][13], string);
format(string, sizeof(string), "%0.2f / %0.2f", tank[vID], mInfo[vModel][maxTank]);
PlayerTextDrawSetString(playerid, Tacho_TD[playerid][15], string);
printf("FahrzeugID: %i, Fahrzeugname: %s, Fahrzeugmodel: %i, Kraftstoffart: %s, Tank: %0.2f / %0.2f Liter", vID, mInfo[vModel][mName], GetVehicleModel(vID), mInfo[vModel][fuelTyp], tank[vID], mInfo[vModel][maxTank]);
//setVehicleKM(playerid);
}
Alles anzeigen
Mein Stock dazu:
stock isCarAnAhCar(vID){
for(new i = 0; i < sizeof(ahCars); i++){
if(ahCars[i][id_x] == vID){
return true;
}else{
return false;
}
}
return 0;
}
Ich hoffe ihr habt eine idee
ich komme irgendwie immer durcheinander wann nun ein Stock und wann ein Callback genutzt werden sollte.
MfG
XonarZ
//EDIT also ich musste statt if(isCarAnAhCar(vID) == false) ... einfach if(!isCarAnAhCar(vID)){ } machen und nun ist der warning weg ![]()