Programim dhe zhvillim, javascript, python, php, html

Skanoni skedarin Lua për emra të pavlefshëm funksionesh (World of Warcraft)

Kështu që unë kam një shtesë Wow e cila është shumë, shumë mijëra rreshta të gjatë. Ndonjëherë, Blizzard heq funksionet Lua nga loja dhe nuk jam gjithmonë i sigurt nëse funksionet që kam thirrur në shtesë janë më të vlefshme.

A ka ndonjë mënyrë që të mund të skanoj një skedar të tërë Lua për funksione që nuk ekzistojnë më?

Unë e di që mund të bëj diçka të tillë:

if not RemovedFunction then print("Function does not exist") end

Por kjo kërkon që unë të kontrolloj çdo emër funksioni një nga një, në mënyrë që të mos jetë realiste (ka qindra).

Do të doja të isha në gjendje të skanoja të gjithë skedarin Lua dhe të më njoftoja nëse ndonjë emër funksioni që kam thirrur nuk është më i pranishëm në World of Warcraft API.

Zgjidhja mund të shkruhet në çdo gjuhë (nuk duhet të jetë shkrimi Lua edhe pse kjo do të ishte e preferueshme).

15.10.2020

Përgjigjet:


1

Këtu mund të gjeni një ditar ndryshimesh

Projekti GitHub tregon se si skanohen ato funksione, në thelb thjesht skanon _G[] dhe kodin FrameXML të Blizzard

Mund të ngarkoni gjithashtu një zip në Globe i cili do t'ju tregojë për çdo API të hequr, p.sh.

15.10.2020
  • Faleminderit Ketho. Globe duket se është mënyra më e mirë deri më tani, pasi unë mund të bëj një zip, ta ngarkoj dhe të kërkoj "removed". A mbahet Globe i përditësuar me ndryshimet e PTR dhe Beta API? Apo përfshin vetëm ndryshimet aktuale të API? 17.10.2020
  • Unë mendoj se janë thjesht ndryshime të drejtpërdrejta / aktuale API 17.10.2020

  • 2

    Një API e mirë do të listonte emrat e funksioneve të hequra në regjistrin e tyre të ndryshimeve. Thjesht kërkoni skenarin tuaj për ata emra.

    Ju mund të përdorni një linter si luacheck për të gjetur gjëra të papërcaktuara në skenarin tuaj. Kjo do t'ju kërkojë të mbani një listë të emrave ekzistues të funksioneve. Kjo funksionon edhe për globalët e tjerë.

    Ose kërkoni skriptin tuaj për thirrje funksionesh dhe kërkoni atë emër në një listë me emra funksionesh ekzistuese. Ose kontrolloni nëse ky emër është zero në mjedisin tuaj. Një thirrje funksioni është çdo emër që ndiqet nga hapësira e bardhë opsionale dhe një nga (, " ose {. Për funksionet kjo është e parëndësishme, për variablat e tjerë bëhet pak më e komplikuar dhe do të përfundoni duke shkruar litarin tuaj, kështu që mund të përdorni edhe një ekzistues.

    15.10.2020

    3

    Skanoni nëse emri i funksionit është zero

    function isFunctionExist(functionName) --Function name in string
      local func = load("return "..functionName")
      if func == nil then
        error("Invalid function name!") --There an invalid letter in your function name that cause load unable to load
      end
    
      return type(func()) == "function"
    end
    

    Ai gjithashtu funksionon në çdo përkthyes lua jo vetëm në shtesën e World of Warcraft, Lua do të shkaktojë attempt to call nil value ose të ngjashme, kështu që përpara se ta ekzekutojmë, kontrollojmë nëse është zero apo funksion

    load("return "..functionName) do të kthejë përmbajtjen e ndryshores funksionName edhe atë zero, atëherë ne e kontrollojmë atë me type nëse është një funksion ekzistues, ai kthen "function"

    type(func()) == "function" këtë rresht bëni kontrollin

    27.11.2020
    Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..