ok danke =)
[SAMMELTHREAD] Kleine Scripting Fragen
- Rafelder
- Unerledigt
Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!
Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
-
-
Das wird nicht ganz funktionieren (Glaube ich)
Wenn du eine Zeile ließt,wird dir die meistens falsch zurück gegeben (Bei windoof anders als Linux soweit ich weiss)
zB:
In der whitelist steht:
[KAQ]Noob
BrotBeim lesen bekommst du aber:
'[KAQ]Noob ' zurück.Mit 1 oder 2 Leerzeichen am Ende.
StripNewLine(string[]) fixt das.
#include <a_samp>#define RED 0xAA3333AA
#define YELLOW 0xFFFF00AAforward Whitelist(playerid);
new gdebug = 0;
public Whitelist(playerid)
{
if (gdebug==1){printf("DEBUG Whitelist Check(%d) (%s)", playerid);}
new playername2[MAX_PLAYER_NAME];
new storedcopname[64];
GetPlayerName(playerid, playername2, sizeof(playername2));
new File: file = fopen("Whitelist.cfg", io_read);
if (file)
{
new valtmp[MAX_PLAYER_NAME];
while (fread(file, valtmp)) {
StripNewLine(valtmp);
if (!strcmp(valtmp, playername2, true, strlen(playername2))) {
fclose(file);
return 1;
}
}
}
fclose(file);
return 0;
}public OnPlayerConnect(playerid)
{
if (Whitelist(playerid)) {
} else {
SendClientMessage(playerid, RED, "Du stehst nicht auf der Whitelist");
}
return 1;
}public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[256];
new idx;
cmd = strtok(cmdtext, idx);if(strcmp(cmd, "/whitelist", true) == 0)
{
new length = strlen(cmdtext);
while ((idx < length) && (cmdtext[idx] <= ' '))
{
idx++;
}
new offset = idx;
new result[64];
while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
{
result[idx - offset] = cmdtext[idx];
idx++;
}
result[idx - offset] = EOS;
if(!strlen(result))
{
return SendClientMessage(playerid, YELLOW, "Benutze: /whitelist [spielername]");
}
if ((IsPlayerAdmin(playerid)))
{
new File:hFile,coordsstring[128];
format(coordsstring,128, "%s\r\n",result);
hFile = fopen("Whitelist.cfg", io_append);
fwrite(hFile, coordsstring);
fclose(hFile);
SendClientMessage(playerid, RED,"Der Spieler wurde zur Whitelist geaddet!");
}
return 1;
}
return 1;
}
//-----------------------strtok-----------------------------
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;
}
//----------------------------------------------------
/**
* Strips Newline from the end of a string.
* Idea: Y_Less, Bugfixing (when length=1) by DracoBlue
* @param string
*/
stock StripNewLine(string[])
{
new len = strlen(string);
if (string[0]==0) return ;
if ((string[len - 1] == '\n') || (string[len - 1] == '\r')) {
string[len - 1] = 0;
if (string[0]==0) return ;
if ((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
}
}
Hab eine Whitelist Funktion in meinem Adminscript.Falls du noch kein Adminscript hast und Whitelist/Blacklist brauchst dürfte das wohl was für dich sein.gAdmin aus meiner Sig :X -
Mann könnte auch anders machen.
stock GetStringEnd(string[])
{
for(new i = 0; i < sizeof(string); i++)
{
if(string[i] == '\0')
strdel(string, i, strlen(string));
}
}Ich habs einfach mal geschrieben und nicht getestet.
Mann muss nähmlich wissen:
Ein String besteht aus vielen kleinen char's.
z.b. char* test = "Hallo"
Hallo <- 0-5 Hallo und 6 = \0
Ein String ist ja auch nur eine Zahlenfolge und der Computer muss ja auch irgendwann wissen wann es zuende ist
Vllt erspart man sich damit ein paar Zeilen code. -
k
-
Hi ich will das wenn man /spawning (odaso)
macht dann will ich das wenn man das 1ste mal /spawning macht das dann ein Auto kommt
und wenn man das 2te mal /spawning macht das dann ein NRG kommt!
case 0:
{
AddStaticVehicle(XXXX);
}
case 1:
{
AddStaticVehicle(XXXXX);
}
So ungefähr oda wie?ah goldkiller guckt
-
new CarCount[MAX_PLAYERS];public OnPlayerConnected(playerid) {
//....
CarCount[playerid]=0;
return 1;
}
//---------
if(!strcmp("/deincommand",cmdtext,true)) {
if(CarCount[playerid]==0) {
CreateVehicle(....);
}
else if(CarCount[playerid]==1) {
CreateVehicle(....);
}
else if(CarCount[playerid]==2) {
CreateVehicle(....);
}
CarCount[playerid]++;
return 1;
}
Kannst es auch mit 'case' machen ,aber nicht "switch" davor vergessen.Außerdem kannst du AddStaticVehicle nur in OnGameModeInit() oder OnFilterscriptInit() benutzten.CreateVehicle(...) dagegen überall. -
bei menü? musst nochmal üba ICQ oda jmd anders klären
483-699-899
-
Davon haste vorher aber nix gesagt...Versteh auch nicht so recht wie du es meinst mit einem Menu
Ich gehe mal davon aus du hast bereits ein Menu.
Case (ZAHL) steht für den X-ten Eintrag im Menu.
default wird dann aufgerufen wenn keines der Fälle (case) zutrifft
public OnPlayerSelectedMenuRow(playerid, row)
{
new Menu:Current;
Current=GetPlayerMenu(playerid);
if(Current==MeinMenu) {
switch(row) {
case 0:{
// Hier immer neues Car Spawnen???
/*
if(CarCount[playerid]==0) {
CreateVehicle(....);
}
else if(CarCount[playerid]==1) {
CreateVehicle(....);
}
else if(CarCount[playerid]==2) {
CreateVehicle(....);
}
CarCount[playerid]++;
*/
}
case 1: {
}
case 2: {
}
case 3: {
}
case 4: {
}
case 5: {
}
default: {
print("Fail");
}
}
}
else if(Current==EINANDERESMENU) { ...
}
return 1;
}
Noch ein nützlicher Link:
Simple Menu Tutorial -
Hi erstma,
als erstes muss ich sagen dass diese ganzen script geschichten für mich noch neuland sind.
also dann zur frage: wie kann man die hauscars umschreiben bzw. andern da ich das standard GF script drauf hab kann man nur bestimmte autos hauscars machen
wie kann ich das machen das ich zb. n monstertruck oder zb. Nrg-500
-
hiii,
weiss einer von euch zufällig wie man einen Clanchat macht ? denn alle Leute sehen können die zB. [GPM] vor dem Nickname haben.
Wisst ihr wie das geht ???
-
kann zaw net gut scripten.. aba man muss dann doch einfach mit DCMD dann z.b. /clanchatallow PLAYERID machen dann kommt bei dudb bei dem playa dann bei: GPM 1 und dann wird gecheckt wenn man /clan XXX schreibt wer GPM 1 in userdatei hat...^^
-
new bool:GPMMember[MAX_PLAYERS];
//**********
stock GangChat(playerid, msg[]) {//Goldkiller
new mystring[128];
format(mystring,128,"# %s:%s",PlayerName(playerid),msg);
for(new i;i<GetMaxPlayers();i++) {
if(GPMMember[playerid]) {
SendClientMessage(i,COLOR_LIGHTBLUE,mystring);
}
}
return 1;
}public OnPlayerConnected(playerid) {
GPMMember[playerid]=false;
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
if (strfind(Name,"[GPM]",true,0)!=-1) GPMMember[playerid]=true;
return 1;
}
public OnPlayerText(playerid, text[]){
if(text[0]=='#') { //adminchat mit "# TEXT"
GangChat(playerid, text[1]);
return 0;
}
return 1;
}
Sollte wieder passen -
new bool:GPMMember[MAX_PLAYERS];
//**********
stock GangChat(playerid, msg[]) {//Goldkiller
new mystring[128];
format(mystring,128,"# %s:%s",PlayerName(playerid),msg);
for(new i;i<GetMaxPlayers();i++) {
if(GPMMember[i] == true)
SendClientMessage(i,COLOR_LIGHTBLUE,mystring);
}
return 1;
}public OnPlayerConnected(playerid) {
GPMMember[playerid]=false;
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
if (strfind(Name,"[GPM]",true,0)!=-1) GPMMember[playerid]=true;
return 1;
}
public OnPlayerText(playerid, text[]){
if(text[0]=='#') { //adminchat mit "# TEXT"
GangChat(playerid, text[1]);
return 0;
}
return 1;
}Mein kleiner Fix
//Gold:Huch,glatt das falsche gepostet :O -
hiii,
thx aba das geht i-wie nich so wirklichC:\Users\DBH\sa-mp Script\Testserver\filterscripts\mafia.pwn(58) : error 017: undefined symbol "PlayerName"
C:\Users\DBH\sa-mp Script\Testserver\filterscripts\mafia.pwn(67) : warning 235: public function lacks forward declaration (symbol "OnPlayerConnected")
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase1 Error.
-
okay ich habs bissl verändert aber das kann jder lesen nur schreiben kann nich jeder
-
kan den niemand meine frage beantworten ??
-
He Proto,
um die Koordinaten herauszufinden, musste n Koordinaten Script benutzen. -
Hi erstma,
als erstes muss ich sagen dass diese ganzen script geschichten für mich noch neuland sind.
also dann zur frage: wie kann man die hauscars umschreiben bzw. andern da ich das standard GF script drauf hab kann man nur bestimmte autos hauscars machen
wie kann ich das machen das ich zb. n monstertruck oder zb. Nrg-500
Sorry Prototyp habe dich übersehen!
also
um Kooridinaten zukriegen musst du /save KOMMENTAR machen...
um Cars zuspawnen einfach DEBUG mode runterladen und dann /v NRG oda /v monster machen!dann rein gehen.. positionieren und dann /save NRG 1
odaso -
Oder ganz einfach mein CoordsSaver benutzen, da kannste beides und noch viel mehr FILTERSCRIPT CoordsSaver
Unten ist der Link zu der neueren Version. -
rafelder äähm ich benutz deinen coordssaver xD und woltle fragen ob ich mit dem auch häuser machen kann