Hey,
achso ... tjoa das is bitte für mich Egal, dann trag ich das gerade mal schnell nach Oder gilt das jetzt nicht mehr ?
Hey,
achso ... tjoa das is bitte für mich Egal, dann trag ich das gerade mal schnell nach Oder gilt das jetzt nicht mehr ?
€dit: Frage geändert, Titel angepasst und Text überarbeitet!
Hallo,
ich würde gerne die Eingabe des Spielers bei einem Input-Dialog auf eine bestimmte Formatierung hin überprüfen (in diesem Falle ZZ.ZZ.ZZ; Z = Zahl) Also genau genommen sollen die Spieler dort ihr fiktives Geburtsdatum eingeben und zwar in der Formatierung TT.MM.JJ. Hier mein Versuch dies mit sscanf zu realisieren:
if(sscanf(inputtext,"{iiciicii}")) {
SendClientMessage(playerid, 0xFF0000AA, "Format: TT.MM.JJ");
ShowPlayerDialog(playerid, TAGREG, DIALOG_STYLE_INPUT, "Registrierung", "Geburtstag eingeben :", "Weiter", "Abbrechen");
}
Aber irgendwie klappt das nicht.... Kann mir einer helfen? Danke im Vorraus!!
[hide]//Haube Threadpushing = Böse.
Guck dir mal die Forenregeln an!
€dit2:
Hey,
Sry aber was?
Ich hab hier nichts gepusht ich habe die gesamte Frage des Beitrags geändert, um nicht extra ein neues Thema eröffnen zu müssen? ich kann auch den Thread schließen...dessen Inhalt kopieren und in einem neuen Thread einfügen (wenns dir lieber ist).
Was im wilden West galt sollte auch heute noch gelten: ERST fragen, DANN schießen
So far
Wong[/hide]
Oh okay.. schade aber da lässt sich nichts machen. Danke euch für die schnellen Antworten =)
So Far
Wong
Hallo SA-MP Community,
ich frage mich, ob man wie in MTA auch in SA:MP die Standard Map von SA entfernen und durch meine eigene ersetzen kann? Es geht mir darum, dass ich einen RL-Server starten will, dessen Map von der Anzahl der Spieler abhängt, sodass man nicht 1 Stunden auf dem Server ist und in der Zeit nicht einen anderen Spieler sieht.
Also einfache Frage: Kann man mit SA:MP die gesamte normale San Andreas Map durch ein eigene Map ersetzen oder muss man mit der Standard Map arbeiten?
Vielen Dank im vorraus.
So Far
Wong
P.S.: Es tut mir leid, wenn es einen ähnlichen Thread schon gibt, aber die Suche weder hier noch in Google hat was ergeben =)
Hey,
ich schon wieder und immer noch das leidige Thema: Mein "Savespot"-Script.
Nun habe ich mich dazu entschlossen an 17 verschiedenen Koordinaten Pickup-Icons auftauchen zu lassen, wenn jemand /savespot eingibt. Und diese dann auch wieder verschwinden zu lassen, wenn der Spieler eines dieser Pickup Icons berührt hat.
Nun mit einem Icon klappt es einwandfrei. Mit mehreren gar nicht. Habs mal mit Arrays versucht, aber das ging nicht. Daher werde ich jetzt einfach mal mein Script hier rein tuen, so wie ich es genutzt habe um ein Pickup Icon zu kreieren.
#include <a_samp>
// This is a comment
// uncomment the line below if you want to write a filterscript
//#define FILTERSCRIPT
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print("\n--------------------------------------");
print(" Savespot by MrWong");
print("--------------------------------------\n");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print("\n----------------------------------");
print(" SAVESPOT BY MrWong");
print("----------------------------------\n");
}
#endif
forward wweg(playerid);
forward PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z);
public OnGameModeInit()
{
// Don't use these lines if it's a filterscript
SetGameModeText("Savespot...testphase");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
new P[3];
new SpotX[17] = {585.5973,486.2860,-18.3100,-321.8542,-346.2466,-371.0864,-794.4404,-661.9984,-772.6521,1952.2704,487.0724,-302.1621,-507.9007,563.1576,192.5610,947.3583};
new SpotY[17] = {883.6793,785.2304,933.5237,1138.8214,1295.8824,1547.2622,2253.1462,2463.7505,2306.8774,2422.1487,1343.4623,-91.7136,1786.2516,2376.4365,1322.7494,1391.6954,2180.7637};
new SpotZ[17] = {-44.9682,-22.3725,20.4921,19.3109,53.2294,75.1333,41.9680,117.6694,135.6736,156.6573,15.3746,60.4404,42.3619,71.3119,9.4645,10.1522,10.3664};
new i, Pick0;
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/savespot", cmdtext, true, 10) == 0)
{
Pick0 = CreatePickup(1277,19,585.5973,883.6793,-44.9682);
SendClientMessage (playerid, 0xFF0000FF,"Bewege dich nun zu einem der Savepoints");
SendClientMessage (playerid, 0xFF0000FF,"und gebe danach erneut /savespot ein!");
}
return 0;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
if (pickupid==Pick0)
{
GetPlayerPos(playerid,P[0],P[1],P[2]);
SetPlayerCheckpoint(playerid,585.5973,883.6793,-44.9682);
SendClientMessage(playerid, 0xFF9900FF, "Bleibe innerhalb der Markierung!");
new Zeit,Wanteds;
Wanteds=GetPlayerWantedLevel(playerid);
Zeit=(Wanteds*80000);
SendClientMessage(playerid,0xFF0000FF,"Bitte warte nun !");
SetTimerEx("wweg", Zeit, false, "i", playerid);
GetPlayerPos(playerid,P[0],P[1],P[2]);
PlayerPlaySound(playerid,1062,P[0],P[1],P[2]);
}
return 1;
}
public wweg(playerid)
{
if (PlayerToPoint(10.0, playerid,585.5973,883.6793,-44.9682))
{
DestroyPickup(Pick0);
SetPlayerWantedLevel(playerid, 0);
DisablePlayerCheckpoint(playerid);
PlayerPlaySound(playerid, 1058, P[0],P[1],P[2]);
PlayerPlaySound(playerid,1063,P[0],P[1],P[2]);
SendClientMessage(playerid, 0xFFFF00FF, "Werd jetz nicht sentimental, aber du bist Frei!");
SendClientMessage(playerid, 0xFFFF00FF, "Bedank dich das nächste mal bei MrWong ...");
}
else
{
SendClientMessage(playerid,0xFFFF00FF, "Du hast das Versteck verlassen.");
SendClientMessage(playerid,0xFFFF00FF, "Bitte suche dir schnell ein Neues.");
SendClientMessage(playerid,0xFFFF00FF, "Oder haben die dich etwa schon geschnappt? xD");
PlayerPlaySound(playerid, 1058, P[0],P[1],P[2]);
PlayerPlaySound(playerid,1063,P[0],P[1],P[2]);
}
return 1;
}
public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z)
{
if(IsPlayerConnected(playerid))
{
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
tempposx = (oldposx -x);
tempposy = (oldposy -y);
tempposz = (oldposz -z);
if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
return 1;
}
}
return 0;
}
SpotX,SpotY,SpotZ sind die jeweiligen X,Y und Z Koords immer passend : SpotX[0]&SpotY[0]&SpotZ[0]=XYZ-Koords für das erste Icon...
the
MrWong
P.s.: Pls help ich verzweifle noch
OK dann ist das Problem gelöst ^^Jetz hab ich ein neues. Und zwar scheinen die Koordinaten, die das Script beim aufrufen von /savespot speichert nie mit denen übereinzustimmen, die als Kontrolle bei wweg dienen. Warum? ich habe einfach nur /savespot eingetippt und das wars... Wie kann man eine Art "Safe-Zone" einrichten? Also, dass der /savespot nutzer sich in einem gewissen Radius bewegen kann? Am besten wäre es, wenn ihm ein Checkpoint eingerichtet wird an den Koords wo er steht und in diesem Checkpoint einfach stehen bleiben muss. Geht das?? Und sobald er den Checkpoint verlässt wird der Timer abgebrochen und der Gesuchte muss erneut /savespot eingeben.. Ist das möglich wenn ja wie?
the
MrWong
danke erstmal dafür. Bleibt noch ein Problem : Wenn ich nun
if (strcmp("/savespot", cmdtext, true, 10) == 0)
{
new float:X,float:Y,float:Z;
GetPlayerPos(playerid,X,Y,Z);
SendClientMessage(playerid, 0xFF0000FF, "Warte und verhalte dich ruhig!");
new float:wanteds, float:dauer;
wanteds = GetPlayerWantedLevel(playerid);
dauer = (wanteds*100000);
SetTimerEx("wweg",dauer,0,"d",playerid);
}
public wweg(playerid)
{
new Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x2,y2,z2);
if (X==x2) && (Y==y2) && (Z==z2)
{
SetPlayerWantedLevel(playerid, 0);
SendClientMessage(playerid, 0x0F0F00FF, "Du bist frei!");
}
}
mache, da ja auch überprüft werden soll, ob er sich bewegt hat oder nicht und wenn er sich bewegt hat, dass die Sache abgebrochen wird, kommt logischerweise das X,Y,Z nicht defeniert sind...auch wenn ich diese am Anfang des Source defenier. Was ist falsch?
the
MrWong
Hey,
also folgendes Problem:
Ich möchte ein Script zusammen basteln, dass es jemandem mit Wantedleveln ermöglicht sich zu "verstecken". Nun bin ich schon soweit, dass die Wanteds bei eingabe von "/savespot" verschwinden, allerdings verschwinden die Wanteds sofort. Das soll allerdings nicht passieren. Die ganze Sache soll so sein, dass die Wanteds erst nach einer bestimmten Zeit, welche je nach höhe des Wantedslevels und der Uhrzeit schwankt, unterschiedlich hoch ausfällt.
Ich habs mit einer for schleife versucht, doch das geht VIIIEEEEL zu schnell. Wie gesagt: Kaum eingegeben schon ist man befreit Also FALSCH !
Wie kann ich es also machen? Hier der wichtige Ausschnitt:
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/savespot", cmdtext, true, 10) == 0)
{
new Float:X, Float:Y, Float:Z, float: wantedK;
GetPlayerPos(playerid,X,Y,Z);
SendClientMessage(playerid, 0xFF0000FF, "Warte und verhalte dich ruhig!");
new float:wanteds, float:zeitst, float:zeitmin, float:dauer,float:zeit;
wanteds = GetPlayerWantedLevel(playerid);
zeit = GetPlayerTime(playerid, zeitst, zeitmin);
dauer = (wanteds*100000/zeitst);
for (new i=0; i<dauer; i++)
{
wantedK = GetPlayerWantedLevel(playerid);
if (wantedK > wanteds)
{
SendClientMessage(playerid, 0xFF0000FF, "Noch ein Wanted? Reicht es dir noch nicht?");
return 0;
}
}
new Float:x2,Float:y2,Float:z2;
GetPlayerPos(playerid,x2,y2,z2);
if (X==x2) && (Y==y2) && (Z==z2)
{
SetPlayerWantedLevel(playerid, 0);
SendClientMessage(playerid, 0x0F0F00FF, "Du bist frei!");
}
}
Bitte missachtet jegliche Unordnung oder Unsauberkeiten: Das is mein ALLERERSTER Gehversuch in PAWN Hab heute erst damit angefange
HELP PLS
the
MrWong
Alles klar danke schön...das hat schonmal bestens geklappt :). Wie kann ich nun die var "i" in die ClientMessage einbinden? Ich will dem Spieler sagen wie lange er noch warten muss..
new Float:PlayerPos[3];
public OnPlayerCommandText(playerid, cmdtext[])
{
if (strcmp("/savespot", cmdtext, true, 10) == 0)
{
GetPlayerPos(playerid,PlayerPos[0],PlayerPos[1],PlayerPos[2]);
SendClientMessage(playerid, 0xFF0000FF, "Warte nun 10 Sekunden!");
for (new i=0; i<10000; i++)
{
SendClientMessage(playerid, 0x0FFF00FF, "Noch"&i&"ms!"); // das mit "&i&" is nur ein test kA obs klappt xD
}
}
return 1;
}
Das sind die Zeilen 108 bis 120. Die von Pawno kritisierte Zeile ist "GetPlayerPos(pla...". Was mache ich falsch?
Zitat(112) : error 017: undefined symbol "PlayerPos"
(112) : warning 215: expression has no effect
(112) : error 001: expected token: ";", but found "]"
(112) : error 029: invalid expression, assumed zero
(112) : fatal error 107: too many error messages on one line
the
MrWong