Szerző Téma: 2 kérés  (Megtekintve 2187 alkalommal)

2 kérés
« Dátum: 2011. november 09. - 20:18:24 »
0 Show voters
Sziasztok 2 kérésem lenne töletek a következõkre lenne szükségem:
1.Szeretnék olyan ajtót készíteni már lementettem 2 objectet zárt-nyitott és azt szeretném vele megcsinálni hogy ne parancsal nyíjjon! úgy értem hogy semmilyen parancsa ne legyen hanem ha pl valamilyen távolságba vagyok tõle kb 2 méter akkor a pl num 4 el tudjam kinyitni !és persze bezárni is ugyan azzal a gombal !És ha megoldható lécci ne CMDS-el !
2. Ilyen havi fizetés féleséget kérnék tõletek olyanra gondolok hogy pl kiírja a rendszer hogy Megjött a havi fizetésed: 10000$ !
De persze minden játékosnak és bizonyos idõnként és ha megoldható lécci ne CMDS el !
Köszönöm szépen !!
Üdv:Viktorka1

2 kérés
« Válasz #1 Dátum: 2011. november 09. - 21:27:38 »
0 Show voters
Az objectes dolog:
[pawn]public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_ANALOG_LEFT) //Ez nálam a num 4, nálad lehet hogy a balra nyíl lesz
{
if(IsPlayerInRangeOfPoint(playerid, 2, X, Y, Z))//Ha a játékos 2m-es körzetben van X Y Z koordinátákhoz (ide a kapu koordinátáit írd)
{
MoveObject(object,X,Y,Z,3.0);//A kapu mozgatása X Y Z koordinátára (ide a nyitott állapotot írd) , object helyére az object nevét...
}
}
return 1;
}[/pawn]
Ezt felhasználva...
példa:
script tetejére:
[pawn]new obj;[/pawn]
OnFilterScriptInit vagy OnGameModeInit alá:
[pawn]obj = CreateObject(980, 15.0, 20.0, 5.0, 0.0, 0.0, 0.0);[/pawn]
az onplayerkeystatechange:
[pawn]public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_ANALOG_LEFT)
{
if(IsPlayerInRangeOfPoint(playerid, 2.0, 15.0, 20.0, 5.0))//2.0 = 2 méter
{
MoveObject(obj,15.0,20.0,0.0,3.0);//3.0 = mozgatás sebessége
}
}
return 1;
}[/pawn]
Menni fog? EZ EDDIG CSAK AZ OBJECTES DOLOG VOLT!!!
A havi fizetés:
1. Létrehozunk egy timert:
OnFilterScriptInit vagy OnGameModeInit alá:
[pawn]for(new i = 0; i<MAX_PLAYERS; i++) SetTimerEx(\"havi\", 1000*60*30, 1, \"i\",i);//fél óránként megjön a havi az online playereknek (mindenkinek ugyanakkor) [1000 = 1 másodperc || 60*1000 = 1perc || 1000*60*30 = 30 perc][/pawn]
2. Írjuk meg, mi történjen fél óránként:
Script/GM aljára:
[pawn]forward havi(playerid);
public havi(playerid)
{
if(IsPlayerConnected(playerid))
{
SendClientMessage(playerid,0x33FF33AA,\"Megjött a havi fizetésed, $10 000\");
GivePlayerMoney(playerid,10000);
}
return 1;
}[/pawn]
« Utoljára szerkesztve: 2011. november 09. - 21:38:12 írta staubka »

2 kérés
« Válasz #2 Dátum: 2011. november 10. - 16:36:47 »
0 Show voters
kösz de a havi fizetésnél
C:\\Users\\Viktor\\Desktop\\szerver\\gamemodes\\lololo.pwn(2678) : error 010: invalid function or declaration
Pawn compiler 3.2.3664           Copyright © 1997-2006, ITB CompuPhase
0 Error.
szerkesztve:már jó bocsi nem a ongamemodeint alá raktam !
« Utoljára szerkesztve: 2011. november 10. - 17:39:24 írta viktorka1 »

2 kérés
« Válasz #3 Dátum: 2011. november 10. - 16:51:12 »
0 Show voters
Idézetet írta: viktorka1 date=1320939407\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13225\" data-ipsquote-contentclass=\"forums_Topic
kösz de a havi fizetésnél http://sampforum.hu/Smileys/DarkB/laugh.gif
C:\\Users\\Viktor\\Desktop\\szerver\\gamemodes\\lololo.pwn(2678) : error 010: invalid function or declaration
Pawn compiler 3.2.3664           Copyright © 1997-2006, ITB CompuPhase
1 Error.
 
Melyik a hibás sor?

Nem elérhető JackBronson

  • 1499
  • ??
    • Profil megtekintése
2 kérés
« Válasz #4 Dátum: 2011. november 10. - 16:59:26 »
0 Show voters
Nekem nem ir errort szerintem sor el tolodás lesz .

2 kérés
« Válasz #5 Dátum: 2011. november 10. - 17:50:39 »
0 Show voters
Vagy átírt benne valamit, és a módosított állapot hibás...

2 kérés
« Válasz #6 Dátum: 2011. november 10. - 18:23:06 »
0 Show voters
jó a segély stirpt mostmár csak 1 ben kéne segítened
[pawn]#include <a_samp>
new obj;
new obj2;
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Blank Filterscript by your name here\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print(\"\\n----------------------------------\");
print(\" Blank Gamemode by your name here\");
print(\"----------------------------------\\n\");
}
#endif
public OnGameModeInit()
{
obj = CreateObject(980, 1540.3244628906, -1627.6479492188, 15.156204223633, 0, 0, 89.730010986328);
//obj3 = CreateObject(980, 1540.3618164063, -1627.7973632813, 9.6562042236328, 0, 0, 89.639831542969);
obj2 = CreateObject(980, 1543.5411376953, -1627.5560302734, 15.156204223633, 0, 0, 270.27026367188);
//obj4 = CreateObject(980, 1543.4578857422, -1627.7202148438, 20.906204223633, 0, 0, 272.25524902344);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_ANALOG_LEFT)
{
if(IsPlayerInRangeOfPoint(playerid, 999999.0, 1540.3244628906, -1627.6479492188, 15.156204223633, 5.0))//2.0 = 2 méter
{
MoveObject(obj, 1540.3618164063, -1627.7973632813, 9.6562042236328, 4.0);//3.0 = mozgatás sebessége
MoveObject(obj2, 1543.4578857422, -1627.7202148438, 20.906204223633, 4.0);//3.0 = mozgatás sebessége
}else{
MoveObject(obj, 1540.3244628906, -1627.6479492188, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
MoveObject(obj2, 1543.5411376953, -1627.5560302734, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
}
return 1;
}[/pawn]
így néz ki a striptem csak az a bajom ha beirom hogy \"}else{\" akkor már nem jó 1 hiba ! de ha nem teszem be csak ki nyitja az ajtót de be nem csukja!

Nem elérhető Stray

  • 617
    • Profil megtekintése
2 kérés
« Válasz #7 Dátum: 2011. november 10. - 18:32:46 »
0 Show voters
#include <a_samp>
new obj;
new obj2;
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Blank Filterscript by your name here\");
print(\"--------------------------------------\\n\");
return 1;
 
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print(\"\\n----------------------------------\");
print(\" Blank Gamemode by your name here\");
print(\"----------------------------------\\n\");
}
#endif
public OnGameModeInit()
{
obj = CreateObject(980, 1540.3244628906, -1627.6479492188, 15.156204223633, 0, 0, 89.730010986328);
//obj3 = CreateObject(980, 1540.3618164063, -1627.7973632813, 9.6562042236328, 0, 0, 89.639831542969);
obj2 = CreateObject(980, 1543.5411376953, -1627.5560302734, 15.156204223633, 0, 0, 270.27026367188);
//obj4 = CreateObject(980, 1543.4578857422, -1627.7202148438, 20.906204223633, 0, 0, 272.25524902344);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_ANALOG_LEFT)
{
if(IsPlayerInRangeOfPoint(playerid, 999999.0, 1540.3244628906, -1627.6479492188, 15.156204223633, 5.0))//2.0 = 2 méter
{
MoveObject(obj, 1540.3618164063, -1627.7973632813, 9.6562042236328, 4.0);//3.0 = mozgatás sebessége
MoveObject(obj2, 1543.4578857422, -1627.7202148438, 20.906204223633, 4.0);//3.0 = mozgatás sebessége
}
}else{
MoveObject(obj, 1540.3244628906, -1627.6479492188, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
MoveObject(obj2, 1543.5411376953, -1627.5560302734, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
}
return 1;
}

 
Az else elötti if-et lekell zárni

2 kérés
« Válasz #8 Dátum: 2011. november 10. - 18:48:02 »
0 Show voters
[pawn]#include <a_samp>
new obj;
new obj2;
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Blank Filterscript by your name here\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#else
main()
{
print(\"\\n----------------------------------\");
print(\" Blank Gamemode by your name here\");
print(\"----------------------------------\\n\");
}
#endif
public OnGameModeInit()
{
obj = CreateObject(980, 1540.3244628906, -1627.6479492188, 15.156204223633, 0, 0, 89.730010986328);
//obj3 = CreateObject(980, 1540.3618164063, -1627.7973632813, 9.6562042236328, 0, 0, 89.639831542969);
obj2 = CreateObject(980, 1543.5411376953, -1627.5560302734, 15.156204223633, 0, 0, 270.27026367188);
//obj4 = CreateObject(980, 1543.4578857422, -1627.7202148438, 20.906204223633, 0, 0, 272.25524902344);
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_ANALOG_LEFT)
{
if(IsPlayerInRangeOfPoint(playerid, 50000.0, 1540.3244628906, -1627.6479492188, 15.156204223633, 5.0))//2.0 = 2 méter
{
MoveObject(obj, 1540.3618164063, -1627.7973632813, 9.6562042236328, 4.0);//3.0 = mozgatás sebessége
MoveObject(obj2, 1543.4578857422, -1627.7202148438, 20.906204223633, 4.0);//3.0 = mozgatás sebessége
}
}else{
MoveObject(obj, 1540.3244628906, -1627.6479492188, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
MoveObject(obj2, 1543.5411376953, -1627.5560302734, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
return 1;
}[/pawn]
C:\\Users\\Viktor\\Desktop\\szerver\\filterscripts\\1.pwn(48) : warning 202: number of arguments does not match definition
C:\\Users\\Viktor\\Desktop\\szerver\\filterscripts\\1.pwn(58) : error 030: compound statement not closed at the end of file (started at line 46)
Pawn compiler 3.2.3664           Copyright © 1997-2006, ITB CompuPhase
1 Error.
return 1 nélkül is ezt írja és a warningal ne foglakozz !

2 kérés
« Válasz #9 Dátum: 2011. november 10. - 19:12:58 »
0 Show voters
Ez mi akar lenni?
[pawn]if(IsPlayerInRangeOfPoint(playerid, 50000.0, 1540.3244628906, -1627.6479492188, 15.156204223633, 5.0))//2.0 = 2 méter[/pawn]
Elõször is ha 50ezer méteres körben van egy játékos, akkor felesleges alkalmazni ezt, mert akárhol tartózkodik, mindig benne lesz.
És a végén mi az az 5.0 ???
Ráadásul...
Hiányzik 1 zárás (ha nem több).
És úgyvan megoldva, hogy ha a játékos megnyomja a gombot de nincs a körzetben akkor bezáródik. Ezt megoldottam timerrel, a nyitástól számított 7másodperc elteltével bezáródik majd a kapu.
Egyébként ez egy FilterScript vagy egy GameMode??? Mert most csak akk fog mûködni ha GameMode...
Ja, és main(){} csak GM esetén szükséges!!!!
Most ez egy GameMode-ként lesz üzemeltetve, ha FS-ként akarod akkor OnGameModeInit-et átírod OnFilterScriptInit-re, az OnGameModeExit-et pedig OnFilterScriptExit-re.
Tessék:
[pawn]#include <a_samp>
new obj;
new obj2;
main(){}
public OnGameModeInit()
{
obj = CreateObject(980, 1540.3244628906, -1627.6479492188, 15.156204223633, 0, 0, 89.730010986328);
//obj3 = CreateObject(980, 1540.3618164063, -1627.7973632813, 9.6562042236328, 0, 0, 89.639831542969);
obj2 = CreateObject(980, 1543.5411376953, -1627.5560302734, 15.156204223633, 0, 0, 270.27026367188);
//obj4 = CreateObject(980, 1543.4578857422, -1627.7202148438, 20.906204223633, 0, 0, 272.25524902344);
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_ANALOG_LEFT)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, 1540.3244628906, -1627.6479492188, 15.156204223633))//5.0 = 5 méter
{
MoveObject(obj, 1540.3618164063, -1627.7973632813, 9.6562042236328, 4.0);//4.0 = mozgatás sebessége
MoveObject(obj2, 1543.4578857422, -1627.7202148438, 20.906204223633, 4.0);//4.0 = mozgatás sebessége
SetTimer(\"close\",7000,0);
}
}
return 1;
}
forward close();
public close()
{
MoveObject(obj, 1540.3244628906, -1627.6479492188, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
MoveObject(obj2, 1543.5411376953, -1627.5560302734, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
return 1;
}[/pawn]

2 kérés
« Válasz #10 Dátum: 2011. november 10. - 19:26:46 »
0 Show voters
kössz de én nem timerrel akartam hanem ha megnyomom a num 4 et akkior kinyíljon és ha mégegyszer megnyomom akokk becsukódjon! nem timer ! jo igy csak nem timerrel kéne ! megoldható ?
« Utoljára szerkesztve: 2011. november 10. - 19:58:39 írta viktorka1 »

2 kérés
« Válasz #11 Dátum: 2011. november 11. - 00:17:34 »
+1 Show voters
[pawn]#include <a_samp>
new obj;
new obj2;
new bool:opened;
main(){}
public OnGameModeInit()
{
obj = CreateObject(980, 1540.3244628906, -1627.6479492188, 15.156204223633, 0, 0, 89.730010986328);
//obj3 = CreateObject(980, 1540.3618164063, -1627.7973632813, 9.6562042236328, 0, 0, 89.639831542969);
obj2 = CreateObject(980, 1543.5411376953, -1627.5560302734, 15.156204223633, 0, 0, 270.27026367188);
//obj4 = CreateObject(980, 1543.4578857422, -1627.7202148438, 20.906204223633, 0, 0, 272.25524902344);
opened = false;
return 1;
}
public OnGameModeExit()
{
return 1;
}
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys == KEY_ANALOG_LEFT)
{
   if(opened == false)
   {
      if(IsPlayerInRangeOfPoint(playerid, 5.0, 1540.3244628906, -1627.6479492188, 15.156204223633))//5.0 = 5 méter
      {
         MoveObject(obj, 1540.3618164063, -1627.7973632813, 9.6562042236328, 4.0);//4.0 = mozgatás sebessége
         MoveObject(obj2, 1543.4578857422, -1627.7202148438, 20.906204223633, 4.0);//4.0 = mozgatás sebessége
         opened = true;
      }
   }
   else if(opened == true)
   {
      MoveObject(obj, 1540.3244628906, -1627.6479492188, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
      MoveObject(obj2, 1543.5411376953, -1627.5560302734, 15.156204223633, 3.0);//3.0 = mozgatás sebessége
      opened = false;
   }
}
return 1;
}[/pawn]

2 kérés
« Válasz #12 Dátum: 2011. november 11. - 17:22:32 »
0 Show voters
hello staubka jó lett megoldottam kössz a  segítséget +1lájk és:
ZÁROK!

2 kérés
« Válasz #13 Dátum: 2011. november 11. - 19:00:33 »
0 Show voters
Stabuka egy kis formai hibát ejtettél:
[pawn]//fél óránként megjön a havi az online playereknek (mindenkinek ugyanakkor) [1000 = 1 másodperc || 60*1000 = 1perc || 1000*60*30 = 30 perc][/pawn]
Zárójellel sokkal egyszerûbb levezetni az egyenletet.
Példa erre:
1000 = 1 másodperc
60*1000 = 1 perc
60*(60*1000) = 1 óra
Remélem érted a logikát benne. Szerintem így könnyebb megadni, vagyis nagyobb számítás esetén kevésbé kavarodik bele az ember.
A te verziód is tökéletesen mûködik tehát ez nem hiba kijavítás ez csak formaság :)

2 kérés
« Válasz #14 Dátum: 2011. november 11. - 21:23:23 »
0 Show voters
Idézetet írta: Gentleman date=1321034433\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"13225\" data-ipsquote-contentclass=\"forums_Topic
Stabuka egy kis formai hibát ejtettél:
[pawn]//fél óránként megjön a havi az online playereknek (mindenkinek ugyanakkor) [1000 = 1 másodperc || 60*1000 = 1perc || 1000*60*30 = 30 perc][/pawn]
Zárójellel sokkal egyszerûbb levezetni az egyenletet.
Példa erre:
1000 = 1 másodperc
60*1000 = 1 perc
60*(60*1000) = 1 óra
Remélem érted a logikát benne. Szerintem így könnyebb megadni, vagyis nagyobb számítás esetén kevésbé kavarodik bele az ember.
A te verziód is tökéletesen mûködik tehát ez nem hiba kijavítás ez csak formaság :)
 
Jó persze de most 3 tag összeszorzását nemfogom zárójelezgetni... Ha nagy számokról van szó akk megoldom így:
#define FIVE_HOUR 1000*60*60*5
És a szám helyére pl a timernél meg csak azt írom hogy FIVE_HOUR ...

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal