22 Haziran 2018, 13:52:31

Gönderen Konu: [YARDIM] Mapratings Hata  (Okunma sayısı 409 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

kamaci4444

  • Acemi Üye
  • *
  • İleti: 146
  • Skype:yunus_kamaci
[YARDIM] Mapratings Hata
« : 14 Nisan 2017, 14:47:02 »
Merhaba arkadaşlar mapratings hata veriyor script çalışmıyor yardım edebilirmisiniz.
Linkleri Görebilmek İçin Kayıt Olun veya Giriş Yapın

Kodları
Kod: Lua
  1. addEvent("onMapStarting",true)
  2. addEventHandler("onMapStarting",getRootElement(),
  3. function (mapInfo)
  4.         oynanan   = mapInfo.playedCount or "N/A"
  5.         end
  6. )
  7. addEventHandler("onMapStarting",getRootElement(),
  8. function(source,cmd)
  9. setTimer(outputChatBox,50,1,"#f0ff00[Harita] #ffffffHarita  #f0ff00"..tostring(oynanan).." #ffffffkez oynandı. /rate 1 ile 10 arasında değer yazarak oylayabilirsiniz",getRootElement(),255,255,255,true)
  10. end
  11. )
  12.  
  13.  
  14.    
  15. addEvent("onMapStarting",true)
  16. addEventHandler("onMapStarting",getRootElement(),
  17. function (mapInfo)
  18.    local map = exports.mapmanager:getRunningGamemodeMap()
  19.    local mapname = getResourceName(map)
  20.    rate  = getMapRating(mapname)
  21.    if not rate then
  22.    setTimer(outputChatBox,50,1,"#b2ffd6 Bu Harita'ya Oy verilmemiş.",getRootElement(),255,255,255,true)
  23.    end
  24.    if rate then
  25.       ortalamaoy = tonumber(rate.average)
  26.       toplamkisi = rate.count
  27.   if ortalamaoy<=0 or ortalamaoy<=1 then
  28.        setTimer(outputChatBox,50,1,"#ffffff Haritanın Puanı #FF0000"..tostring(ortalamaoy).."#b2ffd6/#00ff0010 #f0ff00("..tostring(toplamkisi).." Kişi Puan verdi)",getRootElement(),255,255,255,true)
  29.    
  30.          elseif ortalamaoy<=2 or ortalamaoy<=3 then
  31.        setTimer(outputChatBox,50,1,"#ffffff Haritanın Puanı #FF6600"..tostring(ortalamaoy).."#b2ffd6/#00ff0010 #f0ff00("..tostring(toplamkisi).." Kişi Puan verdi)",getRootElement(),255,255,255,true)
  32.    
  33.          elseif ortalamaoy<=4 or ortalamaoy<=5 then
  34.        setTimer(outputChatBox,50,1,"#ffffff Haritanın Puanı #FFBB00"..tostring(ortalamaoy).."#b2ffd6/#00ff0010 #f0ff00("..tostring(toplamkisi).." Kişi Puan verdi)",getRootElement(),255,255,255,true)
  35.      
  36.          elseif ortalamaoy<=6 or ortalamaoy<=7 then
  37.        setTimer(outputChatBox,50,1,"#ffffff Haritanın Puanı #AAFF00"..tostring(ortalamaoy).."#b2ffd6/#00ff0010 #f0ff00("..tostring(toplamkisi).." Kişi Puan verdi)",getRootElement(),255,255,255,true)
  38.  
  39.          elseif ortalamaoy<=8 or ortalamaoy<=9 then
  40.        setTimer(outputChatBox,50,1,"#ffffff Haritanın Puanı #66FF00"..tostring(ortalamaoy).."#b2ffd6/#00ff0010 #f0ff00("..tostring(toplamkisi).." Kişi Puan verdi)",getRootElement(),255,255,255,true)
  41.  
  42.          elseif ortalamaoy<=10 then
  43.        setTimer(outputChatBox,50,1,"#ffffff Haritanın Puanı #00FF00"..tostring(ortalamaoy).."#b2ffd6/#00ff0010 #f0ff00("..tostring(toplamkisi).." Kişi Puan verdi)",getRootElement(),255,255,255,true)
  44.  
  45.   end
  46. end
  47. end
  48. )
  49. ---
  50. local g_Root = getRootElement()
  51. local g_ResRoot = getResourceRootElement(getThisResource())
  52.  
  53. local g_MapResName
  54.  
  55. addEventHandler('onGamemodeMapStart', g_Root,
  56.         function(mapres)
  57.         g_MapResName = getResourceName(mapres)
  58.         end
  59. )
  60.  
  61. addEventHandler('onResourceStart', g_ResRoot,
  62.         function()
  63.                 -- outputDebugString("delete mapratings "..tostring(executeSQLQuery("DROP TABLE mapratings")))
  64.                 -- Add table if required
  65.                 executeSQLQuery("CREATE TABLE IF NOT EXISTS mapratings (mapname TEXT, playername TEXT, rating INTEGER)")
  66.  
  67.                 -- Create unique index to speed up WHERE when using [mapname] or [mapname+playername]
  68.                 if not executeSQLQuery("CREATE UNIQUE INDEX IF NOT EXISTS IDX_MAPRATINGS_MAPNAME_PLAYERNAME on mapRatings(mapname, playername)") then
  69.                         -- If create unique index has failed, remove duplicates before retrying
  70.  
  71.                         -- Create a temp non-unique index to speed up deletion of duplicates
  72.                         executeSQLQuery("CREATE INDEX IF NOT EXISTS IDX_MAPRATINGS_MAPNAME_PLAYERNAME_temp on mapRatings(mapname, playername)")
  73.                         -- Delete duplicates
  74.                         executeSQLQuery("DELETE FROM mapRatings WHERE rowid in "
  75.                                                                 .. " (SELECT A.rowid"
  76.                                                                 .. " FROM mapRatings A, mapRatings B"
  77.                                                                 .. " WHERE A.rowid > B.rowid AND A.mapname = B.mapname AND A.playername = B.playername)")
  78.                         -- Remove temp index
  79.                         executeSQLQuery("DROP INDEX IDX_MAPRATINGS_MAPNAME_PLAYERNAME_temp")
  80.                         -- Now this should work
  81.                         executeSQLQuery("CREATE UNIQUE INDEX IF NOT EXISTS IDX_MAPRATINGS_MAPNAME_PLAYERNAME on mapRatings(mapname, playername)")
  82.                 end
  83.  
  84.                 -- Create non-unique index to speed up WHERE when using [playername]
  85.                 executeSQLQuery("CREATE INDEX IF NOT EXISTS IDX_MAPRATINGS_PLAYERNAME on mapRatings(playername)")
  86.                
  87.                 -- Perform upgrade from an old version if necessary
  88.                 updateMapNames()
  89.  
  90.                 local currentGamemodeMap = exports.mapmanager:getRunningGamemodeMap()
  91.                 if currentGamemodeMap then
  92.                         g_MapResName = getResourceName(currentGamemodeMap)
  93.                 end
  94.         end
  95. )
  96.  
  97. function updateMapRating(player, mapresname, rating)
  98.         local playername = getPlayerName(player)
  99.         local sql = executeSQLQuery("SELECT rating FROM mapratings WHERE mapname=? AND playername=?", mapresname, playername)
  100.         if #sql > 0 then
  101.                 local success = executeSQLQuery("UPDATE mapratings SET rating=? WHERE mapname=? AND playername=?", rating, mapresname, playername)
  102.                 -- outputDebugString("mapratings: update mapratings "..playername.." "..rating.." "..tostring(success))
  103.                 if not success then return end
  104.                 if sql[1].rating == rating then
  105.                         outputChatBox("Zaten bu haritaya oy verdiniz "..getRatingColorAsHex(rating)..rating.."/10#FF0000.", player, 255, 0, 0, true)
  106.                 else
  107.                         outputChatBox("Oyunuzu "..getRatingColorAsHex(sql[1].rating)..sql[1].rating.."/10 #E1AA5A'dan "..getRatingColorAsHex(rating)..rating.."/10#E1AA5A yaptınız.", player, 225, 170, 90, true)
  108.                 end
  109.         else
  110.                 local success = executeSQLQuery("INSERT INTO mapratings VALUES (?,?,?)", mapresname, playername, rating)
  111.                 -- outputDebugString("mapratings: insert mapratings "..playername.." "..rating.." "..tostring(success))
  112.                 if not success then return end
  113.                 outputChatBox("Rated '"..(getResourceInfo(getResourceFromName(mapresname), "name") or mapresname).."' "..getRatingColorAsHex(rating)..rating.."/10#E1AA5A.", player, 225, 170, 90, true)
  114.                 triggerEvent("onPlayerRateMap", player, mapresname, rating, getMapRating(mapresname))
  115.         end
  116.         triggerEvent("onMapRatingChange", player, getMapRating(mapresname), rating)
  117. end
  118.  
  119. addEvent('onPollStarting')
  120. addEventHandler('onPollStarting', g_Root,
  121.         function(poll)
  122.                 for index, item in ipairs(poll) do
  123.                         if item[1] == "Yes" then return end
  124.                        
  125.                         local mapname = item[1]
  126.                         local map = item[4]
  127.                        
  128.                         if map then
  129.                                 local rating = getMapRating(getResourceName(map))
  130.                                 if rating then
  131.                                         mapname = mapname.." ("..(rating.average or "?")..")"
  132.                                 end
  133.  
  134.                                 item[1] = mapname
  135.                         end
  136.                 end
  137.                 triggerEvent('onPollModified', source, poll )
  138.         end
  139. )
  140.  
  141. function getMapRating(mapresname)
  142.         local sql = executeSQLQuery("SELECT AVG(rating) AS avg , COUNT(rating) AS count FROM mapratings WHERE mapname=?", mapresname)
  143.         if sql[1].count > 0 then
  144.                 local avg = math.floor(sql[1].avg*100+0.5)/100
  145.                 return {average = avg, count = sql[1].count}
  146.         end
  147.         return false
  148. end
  149.  
  150. function getPlayerRating(playername, mapresname)
  151.         if mapresname then
  152.                 local sql = executeSQLQuery("SELECT rating FROM mapratings WHERE playername=? AND mapname=?", playername, mapresname)
  153.                 if #sql > 0 then
  154.                         return sql[1].rating
  155.                 end
  156.         else
  157.                 local sql = executeSQLQuery("SELECT AVG(rating) AS avg , COUNT(rating) AS count FROM mapratings WHERE playername=?", playername)
  158.                 if sql[1].count > 0 then
  159.                         local avg = math.floor(sql[1].avg*100+0.5)/100
  160.                         return {average = avg, count = sql[1].count}
  161.                 end
  162.         end
  163.         return false
  164. end
  165.  
  166. function getRatingColor(rating)
  167.         local r, g = -5.1*(rating^2) + 25.5*rating + 255, -5.1*(rating^2) + 76.5*rating
  168.         r, g = r > 255 and 255 or math.floor(r+0.5), g > 255 and 255 or math.floor(g+0.5)
  169.         -- outputDebugString("mapratings: rating = "..rating.." r = "..r.." g = "..g)
  170.         return {r,g,0}--"#"..string.format("%02X", r)..string.format("%02X", g).."00"
  171. end
  172.  
  173. function getRatingColorAsHex(rating)
  174.         local r, g = unpack(getRatingColor(rating))
  175.         return "#"..string.format("%02X", r)..string.format("%02X", g).."00"
  176. end
  177.  
  178. addCommandHandler('rate',
  179.         function(player, cmd, rating)
  180.                 rating = tonumber(rating)
  181.                 if rating then
  182.                         if rating >= 0 and rating <= 10 then
  183.                                 updateMapRating(player, g_MapResName, math.floor(rating*100+0.5)/100)
  184.                         else
  185.                                 outputChatBox("0 ile 10 arasında bir puan seçin.", player, 255, 0, 0)
  186.                         end
  187.                 else
  188.                         outputChatBox("0 ile 10 arasında bir puan seçin.", player, 255, 0, 0)
  189.                 end
  190.         end
  191. )
  192.  
  193. function updateMapNames()
  194.         local sql = executeSQLQuery("SELECT * FROM mapratings")
  195.         local needUpdate
  196.         if sql and #sql > 0 then
  197.                 for i=1,math.min(5,#sql) do
  198.                         if not getResourceFromName(sql[math.random(1,#sql)].mapname) then
  199.                                 needUpdate = true
  200.                                 break
  201.                         end
  202.                 end
  203.         end
  204.         if not needUpdate then return end
  205.         outputChatBox( "Please wait while the map ratings are assimulated" )
  206.         local maps = exports.mapmanager:getMaps()
  207.         local infoMaps = {}
  208.         for _,map in ipairs(exports.mapmanager:getMaps()) do
  209.                 infoMaps[getResourceInfo(map, "name") or getResourceName(map)] = getResourceName(map)
  210.         end
  211.         local reportTime = getTickCount()
  212.         for i,row in ipairs(sql) do
  213.                 if getTickCount() - reportTime > 5000 then
  214.                         reportTime = getTickCount()
  215.                         outputChatBox( string.format("%2.2f%% done", i * 100 / #sql ) )
  216.                 end
  217.                 if infoMaps[row.mapname] then
  218.                         executeSQLQuery("UPDATE mapratings SET mapname=? WHERE mapname=?", infoMaps[row.mapname], row.mapname)
  219.                         --outputDebugString("mapratings: changed "..tostring(row.mapname).." to "..tostring(infoMaps[row.mapname]))
  220.                 elseif not getResourceFromName(row.mapname) then
  221.                         executeSQLQuery("DELETE FROM mapratings WHERE mapname=?", row.mapname)
  222.                         --outputDebugString("mapratings: deleted "..tostring(row.mapname))
  223.                 end
  224.         end
  225. end
« Son Düzenleme: 15 Nisan 2017, 20:41:40 Gönderen: Narkoz »
 

MTASA-TURK | Türkiye'nin En Güncel MTA Platformu

[YARDIM] Mapratings Hata
« : 14 Nisan 2017, 14:47:02 »

ertrldtcu

  • Deneyimli Üye
  • *
  • İleti: 429
Ynt: [Yardım] Mapratings Hata
« Yanıtla #1 : 14 Nisan 2017, 17:15:20 »
1. satırda ben bir sıkıntı göremedim.
Script yazmak için sadece kod bilmek yetmez.
 

Rüzgar

  • Acemi Üye
  • *
  • İleti: 158
Ynt: [Yardım] Mapratings Hata
« Yanıtla #2 : 14 Nisan 2017, 18:34:20 »
Luac olarak yaparsan hata verebilir ama kod çalışır.
 

kamaci4444

  • Acemi Üye
  • *
  • İleti: 146
  • Skype:yunus_kamaci
Ynt: [Yardım] Mapratings Hata
« Yanıtla #3 : 14 Nisan 2017, 18:48:26 »
Yardımınız için teşekkürler sorun giderildi @Kilit
 

CruzerGq

  • Süper Moderatör
  • *
  • İleti: 503
  • LS Gaming | Hırsız & Polis
    • MTASA-TURK
Ynt: [Yardım] Mapratings Hata
« Yanıtla #4 : 14 Nisan 2017, 19:11:07 »
Konu sahibinin isteği üzerine @Konu Kilit.