Pokaż wyniki od 1 do 1 z 1
Wątek: Skrypt do gry Tetris
  1. #1
    Czeladnik Awatar Exevo
    Dołączył
    06 Dec 2012
    Posty
    39
    Reputacja:
    Punkty reputacji: 0
    Podziękował(a)
    0
    Podziękowań: 1 w 1 poście

    Skrypt do gry Tetris

    Witam, chciałem Wam przedstawić skrypt do gry Tetris.

    Nazwa skryptu: Tetris
    Autor:Fatty Efx/Exevo
    Wymagania (ekwipunek, potki): Bez wymagań
    Opis*: Należy umieścić ten plik PHP do jakiegoś NPC, bynajmniej ja tak zrobiłem, dzięki temu skryptowi można grać w Tetris w tibii.
    Screeny*: Po otwarciu ots'a wstawię.

    Więc tak, tworzymy plik tetris.lua i wklejamy do niego:
    Kod PHP:
    1. --[[
    2. Tetris system By Exevo (mtb)
    3. Email: <a href="mailto:bastyx@o2.pl">bastyx@o2.pl</a>
    4. Enjoy ""
    5. ]]
    6. local config = {
    7. uppos = {x=983,y=1204,z=7},
    8. dowpos = {x=989,y=1214,z=7},
    9. playerpos = {x=991,y=1211,z=7},
    10. block_start={x=986,y=1205,z=7},
    11. exit={x=991,y=1208,z=7},
    12. delay=10,
    13. item=1739,
    14. effects = {
    15. mark=3,
    16. burn=15,
    17. },
    18. blocks = {
    19. --
    20. {
    21. {
    22. {0,1,0},
    23. {1,1,1},
    24. {0,0,0},
    25. },
    26. {
    27. {0,1,0},
    28. {0,1,1},
    29. {0,1,0},
    30. },
    31. {
    32. {0,0,0},
    33. {1,1,1},
    34. {0,1,0},
    35. },
    36. {
    37. {0,1,0},
    38. {1,1,0},
    39. {0,1,0}
    40. }
    41. },
    42.  
    43. {
    44. {
    45. {1,1,1},
    46. },
    47. {
    48. {1},
    49. {1},
    50. {1},
    51. },
    52. },
    53. --
    54. {
    55. {
    56. {1},
    57. },
    58. },
    59. {
    60. {
    61. {1,1},{1,1},
    62. },
    63. },
    64.  
    65.  
    66. },
    67. data={false},
    68. }
    69.  
    70. local function createItensInArea(item, pos, area) -- Function by Exevo
    71. local centro = {}
    72. local coisa = {}
    73. centro.y = math.floor(#area/2)+1
    74. for y = 1, #area do
    75. for x = 1, #area[y] do
    76. number = area[y][x]
    77. if number > 0 then
    78. centro.x = math.floor(table.getn(area[y])/2)+1
    79. local pos = {x = pos.x + x - centro.x, y = pos.y + y - centro.y, z = pos.z}
    80. local items = doCreateItem(item, 1, pos)
    81. table.insert(coisa, 1, items)
    82. return coisa
    83. local function removeItensInArea(item, pos, area) -- Function by Exevo
    84. local centro = {}
    85. centro.y = math.floor(table.getn(area)/2)+1
    86. for y = 1, table.getn(area) do
    87. for x = 1, table.getn(area[y]) do
    88. number = area[y][x]
    89. if number > 0 then
    90. centro.x = math.floor(table.getn(area[y])/2)+1
    91. local pos = {x = pos.x + x - centro.x, y = pos.y + y - centro.y, z = pos.z,stackpos = 255}
    92. local coisa = getThingfromPos(pos)
    93. if coisa.itemid == item then
    94. doRemoveItem(coisa.uid,1)
    95. local function checkItensInArea(item, pos, area,coisas) -- Function by Exevo
    96. local centro = {}
    97. if coisas == nil then
    98. coisas = {}
    99. centro.y = math.floor(table.getn(area)/2)+1
    100. for y = 1, table.getn(area) do
    101. for x = 1, table.getn(area[y]) do
    102. number = area[y][x]
    103. if number > 0 then
    104. centro.x = math.floor(table.getn(area[y])/2)+1
    105. local pos = {x = pos.x + x - centro.x, y = pos.y + y - centro.y, z = pos.z,stackpos = 1}
    106. local coisa = getThingfromPos(pos)
    107. if coisa.itemid == item then
    108. if not isInArray(coisas, coisa.uid) then
    109. return true
    110. return false
    111. function clean(pos1,pos2,stack) -- Function by Exevo
    112. for x = 0, math.floor(pos2.x-pos1.x) do
    113. for y = 0, math.floor(pos2.y-pos1.y) do
    114. local coisa = getThingfromPos({x = pos1.x+x, y = pos1.y+y, z = pos1.z, stackpos = stack})
    115. if coisa.itemid == config.item then
    116. doRemoveItem(coisa.uid,1)
    117. local function pushdown(pos1,pos2,item) -- push all piece 1 sqm to down
    118. -- Function by mock
    119. local ymax = math.floor(pos2.y-pos1.y)
    120. for y = 1,ymax do
    121. for x = 1, math.floor(pos2.x-pos1.x)-1 do
    122. local coisa = getThingfromPos({x = pos1.x+x, y = pos1.y+(ymax-y), z = pos1.z, stackpos = 1})
    123. if coisa.itemid == item then
    124. local p2 = getThingPos(coisa.uid)
    125. doRemoveItem(coisa.uid,1)
    126. p2.y = p2.y+1
    127. doCreateItem(item, 1, p2)
    128. local function checkline(pos,cid,item) -- Function by Exevo
    129. local sizex = config.dowpos.x-config.uppos.x-1
    130. local t = {}
    131. for x=1,sizex do
    132. local using = {x=pos.x+x,y=pos.y,z=pos.z,stackpos=1}
    133. local igz = getThingfromPos(using)
    134.  
    135. if igz.itemid == item then
    136.  
    137. table.insert(t,1,{using,igz.uid})
    138. if #t == sizex then
    139. setPlayerStorageValue(cid,21451, getPlayerStorageValue(cid, 21451)+1)
    140. for i=1,#t do
    141. local f = t[i]
    142. doRemoveItem(f[2],1)
    143. if config.effects.burn then
    144. doSendMagicEffect(f[1],config.effects.burn)
    145. pushdown(config.uppos,{x=config.dowpos.x,y=pos.y,z =config.dowpos.z},item)
    146. checkline(pos,cid,item)
    147. function doSendMagicEffectInArea(pos,effect,area,cid) -- Function by Exevo
    148. local centro = {}
    149. centro.y = math.floor(table.getn(area)/2)+1
    150. for y = 1, table.getn(area) do
    151. for x = 1, table.getn(area[y]) do
    152. if area[y][x] > 0 then
    153. centro.x = math.floor(table.getn(area[y])/2)+1
    154. if type(effect) == 'table' then
    155. doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},(effect[area[y][x]] or 0),cid)
    156. else
    157. doSendMagicEffect({x=pos.x+x-centro.x,y=pos.y+y-centro.y,z= pos.z},effect or 0,cid)
    158. return true
    159.  
    160. local function pedra(pos,cid,area) -- Function by Exevo
    161. config.data = config.data or {}
    162. config.data[6] = config.data[6] or config.delay
    163. config.data[5] = config.data[5] or 1
    164. config.data[5] = config.data[5]+1
    165. if config.data[1] == false then
    166. config.data[1] = #area == 1 and 1 or math.random(1,#area)
    167. local cre_pos = getCreaturePosition(cid)
    168. pos.stackpos = 255
    169. pos.y = pos.y-1
    170. if getThingfromPos(pos).itemid == config.item then
    171. removeItensInArea(config.item,pos, area[config.data[1]])
    172. if config.data[5] >= config.data[6] then
    173. pos.y = pos.y+1
    174. config.data[5] = 1
    175. pos.stackpos = 1
    176. if cre_pos.x == config.playerpos.x+1 then
    177. doTeleportThing(cid, config.playerpos)
    178. pos.x = pos.x+1
    179. local coisa2 = getThingfromPos(pos)
    180. if checkItensInArea(463,pos, area[config.data[1]]) or checkItensInArea(config.item,pos, area[config.data[1]]) then
    181. pos.x = pos.x-1
    182. doSendAnimatedText(cre_pos, "Block", math.random(1,255))
    183. elseif cre_pos.x == config.playerpos.x and cre_pos.y == config.playerpos.y+1 then
    184. doTeleportThing(cid, config.playerpos)
    185. pos.y = pos.y+1
    186. if checkItensInArea(463,pos, area[config.data[1]]) or checkItensInArea(config.item,pos, area[config.data[1]]) then
    187. pos.y = pos.y-1
    188. doSendAnimatedText(cre_pos, "Block", math.random(1,255))
    189. elseif cre_pos.x == config.playerpos.x and cre_pos.y == config.playerpos.y-1 then
    190. doTeleportThing(cid, config.playerpos)
    191. if #area > 1 then
    192. local rot = #area < config.data[1]+1 and 1 or config.data[1]+1
    193. if checkItensInArea(463,pos, area[rot]) or checkItensInArea(config.item,pos, area[rot]) then
    194. doSendAnimatedText(cre_pos, "Block", math.random(1,255))
    195. else
    196. config.data[1] = rot
    197. elseif cre_pos.x == config.playerpos.x-1 then
    198. doTeleportThing(cid, config.playerpos)
    199. pos.x = pos.x-1
    200. local coisa2 = getThingfromPos(pos)
    201. if checkItensInArea(463,pos, area[config.data[1]]) or checkItensInArea(config.item,pos, area[config.data[1]]) then
    202. pos.x = pos.x+1
    203. doSendAnimatedText(cre_pos, "Block", math.random(1,255))
    204. if config.data[3] then
    205. config.data[3] = nil
    206. return
    207. pos.stackpos=1
    208. if getThingfromPos(pos).itemid == config.item then
    209. doPlayerSendTextMessage(config.data[2], 24, 'You lose!')
    210. clean(config.uppos,config.dowpos,2)
    211. clean(config.uppos,config.dowpos,1)
    212. creation = nil
    213. doTeleportThing(config.data[2], config.exit)
    214. config.data[2] = nil
    215. config.data[1] = false
    216. config.data[3] = true
    217. return
    218. local uida = createItensInArea(config.item,pos, area[config.data[1]])
    219. if config.effects.mark then
    220. doSendMagicEffectInArea(pos,config.effects.mark, area [config.data[1]] )
    221. local humrox = pos
    222. pos.y = pos.y+1
    223. if not checkItensInArea(463,pos, area[config.data[1]]) and not checkItensInArea(config.item,humrox, area[config.data[1]],uida) then
    224. addEvent(pedra, 100, pos,cid,area)
    225. else
    226. e = 0
    227. for i=0,((config.dowpos.y)-(config.uppos.y)) do
    228. e = e-1
    229. addEvent(checkline,100*i,{x=config.uppos.x,y= config.dowpos.y +e,z=config.uppos.z},cid,config.item)
    230. creation = nil
    231. config.data[1] = false
    232.  
    233.  
    234. local function control_loop(startpos) -- Function by Exevo
    235. if not config.data[2] then
    236. return
    237. doSendMagicEffect(getCreaturePosition(config.data[2]), 1)
    238. local poi = getPlayerStorageValue(config.data[2], 21451)
    239. if poi == -1 then
    240. setPlayerStorageValue(config.data[2],21451, 0)
    241. poi = 0
    242. doSendAnimatedText(getCreaturePosition(config.data[2]), "points: "..poi, math.random(1,255))
    243. startpos.stackpos = 2
    244. local coisaa = getThingfromPos(startpos)
    245. if not creation then
    246. creation = true
    247. addEvent(pedra, 1000, {x=config.block_start.x,y=config.block_start.y,z= config.block_start.z ,stackpos=1},config.data[2],config.blocks[math.random(1,#config.blocks)])
    248. if coisaa.itemid == config.item then
    249. doPlayerSendTextMessage(config.data[2], 24, 'You lose!')
    250. clean(config.uppos,config.dowpos,2)
    251. clean(config.uppos,config.dowpos,1)
    252. creation = nil
    253. doTeleportThing(config.data[2], config.exit)
    254. config.data[2] = nil
    255. config.data[1] = false
    256. config.data[3] = true
    257. else
    258. addEvent(control_loop, 300, startpos)
    259.  
    260. function onUse(cid, item, fromPosition, itemEx, toPosition)
    261. if not config.data[2] then
    262. doTeleportThing(cid, config.playerpos)
    263. setPlayerStorageValue(cid,21451, 0)
    264. config.data[2] = cid
    265. addEvent(control_loop, 1000,config.block_start)
    266. else
    267. doPlayerSendCancel(cid,'Tetris is in use. Please wait.')
    268. return false


    UWAGA! To nie jest skrypt PHP, tylko LUA. Napisałem w autorze Fatty Efx/Exevo, ponieważ gram pod tymi nickami. Jeśli ktosjest ogarnięty, może również przetłumaczyć na Polski.
    Ostatnio edytowane przez Exevo ; 01-01-13 o 13:01

Informacje o wątku

Użytkownicy przeglądający ten wątek

Aktualnie 1 użytkownik(ów) przegląda ten wątek. (0 zarejestrowany(ch) oraz 1 gości)

Podobne wątki

  1. skrypt
    Przez uix w dziale Poszukuję
    Odpowiedzi: 0
    Ostatni post / autor: 23-08-12, 18:08
  2. Prośba o skrypt
    Przez Empty87 w dziale Poszukuję
    Odpowiedzi: 0
    Ostatni post / autor: 04-07-12, 00:07
  3. Skrypty & Kody opcja else nie dziala moj 1 skrypt przebudowa na skrypt z t
    Przez szakers w dziale Pomoc
    Odpowiedzi: 5
    Ostatni post / autor: 03-07-12, 13:07
  4. BBot Skrypt dla 100 ek
    Przez Dundas w dziale Pomoc z Botami
    Odpowiedzi: 0
    Ostatni post / autor: 10-04-12, 14:04
  5. [8.1][Skrypt]Skrypt na anty pk
    Przez largo10 w dziale Kosz
    Odpowiedzi: 7
    Ostatni post / autor: 02-11-08, 12:11

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •